Problem description
The release automation reusable workflow currently has 17 jobs in the reusable workflow (19 including caller-level). Several are lightweight (2-6s compute each) but each requires its own runner startup (~3s gap). The high job count makes the workflow harder to understand, trace, and maintain:
- Data flow requires tracing across many
needs: references and explicit output passing
- GitHub Actions UI shows a long list of jobs (most skipped per run)
- The job dependency diagram requires significant effort to keep readable
Proposed change
Combine 4 lightweight jobs into their natural parent jobs:
- assemble-context → derive-state: Pure post-processing of derive-state outputs; shares the same tooling checkout and Python setup
- validate-command → derive-state: Single
github-script step (~20 lines); no separate setup needed
- create-sync-pr → publish-release: Only runs on publish success; shares tooling checkout and Python; natural step-level condition
This reduces the reusable workflow from 17 to 13 jobs with no logic changes — purely mechanical refactoring.
Impact
| Path |
Jobs before |
Jobs after |
Time saved |
| /create-snapshot |
5 |
3 |
~9s |
| PR merge |
5 |
4 |
~3s |
| /publish-release |
6 |
3 |
~12s |
Primary benefit is architectural clarity (simpler needs: graphs, less output plumbing, cleaner Actions UI). Latency savings are modest but measurable (~3s per eliminated job boundary, based on 47 runs on ReleaseTest).
Additional context
- No functional changes — all consolidations are mechanical (move steps, update
needs: references, rewire outputs)
- Detailed analysis with measured timings available in the technical documentation
Problem description
The release automation reusable workflow currently has 17 jobs in the reusable workflow (19 including caller-level). Several are lightweight (2-6s compute each) but each requires its own runner startup (~3s gap). The high job count makes the workflow harder to understand, trace, and maintain:
needs:references and explicit output passingProposed change
Combine 4 lightweight jobs into their natural parent jobs:
github-scriptstep (~20 lines); no separate setup neededThis reduces the reusable workflow from 17 to 13 jobs with no logic changes — purely mechanical refactoring.
Impact
Primary benefit is architectural clarity (simpler
needs:graphs, less output plumbing, cleaner Actions UI). Latency savings are modest but measurable (~3s per eliminated job boundary, based on 47 runs on ReleaseTest).Additional context
needs:references, rewire outputs)