Build the job runner itself. Write run_job(steps) that executes a
list of step dicts ({"name": ..., "ok": ...}) the way GitHub
Actions does:
- Before any failure: print
ok <name>for each passing step. - At the first step with
okFalse: printfail <name>. - Every step after the failure: print
skip <name>— it never runs. - Return
"failure"if any step failed, else"success".
Then the script prints the job's conclusion.
Expected output:
ok install
ok pytest
fail data validation
skip eval gate
conclusion: failure