RC results share enums across run/workflow/step, database, cleanup, and plugins. Existing business failure outranks cancellation; cleanup failure changes the overall state only after business passed while preserving business_status. First interrupt is graceful; second permits immediate exit with a minimal marker.
ATIR documents contain version, project, execution, and workflows. A workflow declares risk, tags, optional resource locks and dependency-bearing steps. A step declares one request, optional extractions, and sourced assertions.
Variables:
${env.NAME}: environment or.envvalue;${vars.name}: compiler/runtime variable;${steps.step_id.name}: prior extraction.
A whole-value expression preserves its original type; interpolation inside a larger string produces text. Every unresolved variable blocks before the affected request. DAG order is computed topologically and cycles are invalid.
Extraction types are JMESPath JSON, header, cookie and regex. Required missing extraction blocks dependent work. Sensitive extracted keys are redacted in evidence.
Requests support JSON, query, headers, URL-encoded form data and multipart files. File values map multipart field names to local paths; retries rewind handles, handles always close, and evidence stores basenames rather than file bytes.
eventual repeats the same request until its nested deterministic target passes or the explicit timeout expires. Every poll is saved; intervals and timeouts must be finite.
See schemas/workflow.schema.json and templates/workflow.example.yaml for the machine-readable contract.