Skip to content

Consolidate lightweight workflow jobs for clarity and performance #101

@hdamker

Description

@hdamker

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:

  1. assemble-context → derive-state: Pure post-processing of derive-state outputs; shares the same tooling checkout and Python setup
  2. validate-command → derive-state: Single github-script step (~20 lines); no separate setup needed
  3. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    BacklogImplementation not considered short-term, long-term evolution issueenhancementNew feature or requestrelease automationRelated to the implementation or introduction of new release automation

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions