ageval run lifecycle: from static lock to sealed evidence
Five phases of one run (lock, environment, run, evaluate, record), with key isolation between environment and scoring plus cross-cutting safeguards.
01 · LOCK
02 · ENVIRONMENT
03 · RUN
04 · EVALUATE
05 · RECORD
ageval lock
Static dependency graph
Resolve plugin contracts
Match export & inject
Probe env & credentials
Fail fast if deps or keys missing
lock.json
Immutable call blueprint
Fail lock → no run
Build environment
docker · e2b · local…
Spin up isolated sandbox
Dedicated container / remote instance
Upload task files
Task code into the environment
gold strictly isolated
Invisible inside the env now
Switch env: one profiles line
Task loop
run.py drives execution
Business loop
Local tools & handoffs
Multi-turn Agent
ACP / specialized long sessions
trajectory.jsonl
Stream the full trajectory
Env/Agent swap leaves run.py
Independent eval
evaluator.py decides
Upload gold now
Eval env may use network: none
Flexible scoring
Scripts / LLM-as-judge
Sole source of PASS
Agent self-claim doesn't count
Supports multi-stage
Seal evidence
evidence run archive
Full reproducibility assets
lock.json + result.json
Local Viewer review
Phase timing & calls
Upload to Hub
Leaderboards · one-click replay
Attributable · reproducible
limits · resource caps
wall-clock · peak memory · process forks · API calls (trip on exceed)
Before the run
cleanup · always in finally
any exit (ok / fail / timeout / cancel) reclaims sandbox, ports, temp credentials
No leftover state
LEGEND
Phase cards
One-way phase advance
gold strictly isolated
Invisible in the env during the task
Evidence seal flow
evidence focal end state