Problem description
The Close Release Issue step in the post-result job of release-automation-reusable.yml uses ~100 lines of inline JavaScript that duplicates logic already implemented in issue_manager.py and issue_sync.py (STATE/ACTIONS section updates, label swap, close). Changes to section format or label names require updating two places.
Possible evolution
Replace the inline JavaScript with a composite action or Python script step that calls IssueSyncManager.close_release_issue(). This consolidates the issue mutation logic into the shared Python codebase, where it is already tested.
Alternative solution
Keep the inline JS and add comments cross-referencing the Python implementation to ensure they stay in sync. This avoids the refactoring effort but leaves the duplication in place.
Additional context
The inline JS works correctly. This is a maintenance burden reduction, not a bug fix. Priority is low — the issue close logic changes rarely.
Problem description
The Close Release Issue step in the
post-resultjob ofrelease-automation-reusable.ymluses ~100 lines of inline JavaScript that duplicates logic already implemented inissue_manager.pyandissue_sync.py(STATE/ACTIONS section updates, label swap, close). Changes to section format or label names require updating two places.Possible evolution
Replace the inline JavaScript with a composite action or Python script step that calls
IssueSyncManager.close_release_issue(). This consolidates the issue mutation logic into the shared Python codebase, where it is already tested.Alternative solution
Keep the inline JS and add comments cross-referencing the Python implementation to ensure they stay in sync. This avoids the refactoring effort but leaves the duplication in place.
Additional context
The inline JS works correctly. This is a maintenance burden reduction, not a bug fix. Priority is low — the issue close logic changes rarely.