Status: accepted
Runner assets declare the lifecycle phases they use. When all standard phases are present, their order is:
init: acquire run ownership; validate input, repository, policy and approved paths.setup: prepare catalog, fixture, environment and recovery state.run: invoke bounded tools, models and target subprocesses.eval: collect evidence, score it and request a policy decision.teardown: persist per-iteration evidence and clean temporary resources.finalize(optional): perform process-level work after all iterations.
teardown currently runs in the normal loop. It is not yet guaranteed after failure, timeout, cancellation or emergency stop.
- The Python runner starts commands as argument arrays without a shell.
- A run records PID, process group/tree identity, phase, start/finish timestamps and trace ID durably.
- Unix stop requests signal the process group; Windows terminates the root process.
Each generated runner step has a timeout and optional minimum interval. Evaluation builds declare timezone, repeat interval and total run limit. Retry policy, activity windows and their dashboard controls are planned.
An evaluation build may use the remote-http executor to invoke a server-hosted agent. It declares an absolute HTTP(S) endpoint, allowed method, timeout and non-secret payload. Embedded URL credentials are prohibited. The request, response status and trace ID are retained with the run; authentication environment-variable references, response redaction and complete lifecycle staging are planned.
Guarantee cleanup, graceful stop with descendant termination on every platform, retry/activity-window scheduling, and full remote-agent lifecycle handling.