Skip to main content

v2.71.0

Released 2026-10-01.

Binaries and the merged-pull-request list are on the GitHub releases page.

The plan names its runners​

Every plan job now carries index: its position in the plan, dense and 0-based, and the same every time the same intent is planned (the topological sort is now a function of the graph alone, not of map order). CI turns it into a runner label that pins a runner to one lane:

runs-on: [self-hosted, linux, x64, orun, "ghr-orun-job:${{ github.run_id }}-${{ matrix.index }}"]

orun plan --github-output adds index to every matrix entry, and the plan the platform receives carries each job's index, runsOn and labels, so the platform can map a GitHub lane back to its plan job. This is the first milestone of orun-managed-runners: the gate that releases a lane only when its dependencies are done.

orun run init​

orun run init --plan plan.json --exec-id "$GITHUB_RUN_ID" --remote-state

Creates (or idempotently joins) the remote run for a plan and exits without claiming a job. A CI plan job runs it before the matrix fans out, so the run's coordinator exists before the first lane is queued; every lane's orun run --job … --exec-id <same id> then joins it, exactly as today when the first lane creates it. Nothing changes for workflows that do not call it.