← gitpulse
Merged
Size
L
Change Breakdown
New Feature75%
Configuration15%
CI/CD10%
#6feat(releases) phase B: analyzer release pass

Release editions auto-generated from PR data

The analyzer pipeline now processes GitHub releases end-to-end, matching each release to its constituent PRs and generating AI-written editorial copy. Hash-based caching prevents redundant LLM calls on unchanged data.

The analyzer pipeline now handles GitHub releases. After walking PRs and commits, it fetches up to 20 recent releases from the GitHub REST API, compares each release window against the previous one to get the merge SHA list, then matches those SHAs against on-disk stories. The top five largest PRs become featured stories; the rest appear in a changelog.

Matched releases pass through an LLM that generates a deadpan quip and 2-3 paragraph release story using a schema lifted from the existing web app. The analyzer computes a hash over the release's inputs — tag, sorted story IDs, aggregated stats — and skips the LLM call entirely if a matching release file already exists on disk. This makes runs idempotent: re-running the analyzer doesn't redundantly call the LLM for unchanged releases.

LLM failures fall back to a generic quip ("Another one shipped."), ensuring the analyzer never bails on a single release. Prereleases can be excluded via a workflow toggle.

This is Phase B of a three-phase initiative. Phase A added the SiteFetcher extensions for restoring prior releases. Phase C will add frontend rendering: components, routes, OG images, JSON-LD, and the homepage release feed.