The strategy context is built from fail-fast and, when present, max-parallel (crates/runner-workflow-github-actions/src/context/evaluation.rs:110-126).
GitHub also exposes strategy.job-index and strategy.job-total.
The failure is silent. Unknown properties evaluate to Value::Null
(expression/access.rs:11-48), which renders as an empty string, so ${{ strategy.job-index }} yields "" instead of a leg number. A workflow that
shards a test suite across matrix legs would run every leg with the same empty
shard id and still report success — the exact silent fallback AGENTS.md rules
out.
Fix: populate both properties from the matrix expansion. Failing that, reject
the reference explicitly rather than resolving it to null.
Found while writing the compatibility suite (#13): the natural way to assert
that a matrix expanded into the expected number of legs is strategy.job-total, and it is not available.
The `strategy` context is built from `fail-fast` and, when present,
`max-parallel` (`crates/runner-workflow-github-actions/src/context/evaluation.rs:110-126`).
GitHub also exposes `strategy.job-index` and `strategy.job-total`.
The failure is silent. Unknown properties evaluate to `Value::Null`
(`expression/access.rs:11-48`), which renders as an empty string, so
`${{ strategy.job-index }}` yields `""` instead of a leg number. A workflow that
shards a test suite across matrix legs would run every leg with the same empty
shard id and still report success — the exact silent fallback AGENTS.md rules
out.
Fix: populate both properties from the matrix expansion. Failing that, reject
the reference explicitly rather than resolving it to null.
Found while writing the compatibility suite (#13): the natural way to assert
that a matrix expanded into the expected number of legs is
`strategy.job-total`, and it is not available.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
The
strategycontext is built fromfail-fastand, when present,max-parallel(crates/runner-workflow-github-actions/src/context/evaluation.rs:110-126).GitHub also exposes
strategy.job-indexandstrategy.job-total.The failure is silent. Unknown properties evaluate to
Value::Null(
expression/access.rs:11-48), which renders as an empty string, so${{ strategy.job-index }}yields""instead of a leg number. A workflow thatshards a test suite across matrix legs would run every leg with the same empty
shard id and still report success — the exact silent fallback AGENTS.md rules
out.
Fix: populate both properties from the matrix expansion. Failing that, reject
the reference explicitly rather than resolving it to null.
Found while writing the compatibility suite (#13): the natural way to assert
that a matrix expanded into the expected number of legs is
strategy.job-total, and it is not available.