Context
action.yml has grown into an 846-line composite action with embedded bash, inline Python, GitHub API calls, release-note collection, rendering, posting, and asset upload logic. This makes behavior hard to test outside Actions and makes review of release/report changes noisy.
Evidence
wc -l action.yml reports 846 lines.
- The
Collect GitHub PR data step embeds a large Python script inside YAML.
- That script handles PR queries, release-note markers, linked issues, dependency parsing, direct commits, diff stats, benchmark placeholders, and output JSON.
- Tests cover report templates and parsers, but this collector logic is not easy to unit test as a normal Python module.
Proposed Scope
- Extract release-note/PR collection into a Python module or script under
src/kida or scripts/ with focused tests.
- Keep
action.yml as wiring: setup, call collector, render, post.
- Add fixtures for release-note markers, dependency PRs, direct commits, missing tags, and malformed GitHub responses.
Done When
action.yml is materially smaller and mostly declarative.
- Collector behavior has local tests that do not require a live GitHub event.
- Existing release-note action workflows continue to work.
Context
action.ymlhas grown into an 846-line composite action with embedded bash, inline Python, GitHub API calls, release-note collection, rendering, posting, and asset upload logic. This makes behavior hard to test outside Actions and makes review of release/report changes noisy.Evidence
wc -l action.ymlreports 846 lines.Collect GitHub PR datastep embeds a large Python script inside YAML.Proposed Scope
src/kidaorscripts/with focused tests.action.ymlas wiring: setup, call collector, render, post.Done When
action.ymlis materially smaller and mostly declarative.