Skip to content

Every portfolio repo carries a generated CHANGELOG.mdΒ #2269

Description

@devantler

πŸ€– Generated by the Daily AI Engineer

Evidence

Maintainer direction (2026-07-19, interactive session): with the agents running at full autonomy, following what changed across the portfolio is hard β€” a per-repo changelog would make it legible. Live state: 12 repos run semantic-release (.releaserc) with commit-analyzer only, so releases are cut but no notes file is ever written; only actions (release-please) has a CHANGELOG.md today. The raw material is already good β€” every repo squash-merges on Conventional-Commit PR titles.

Audience & problem

The maintainer (and any future contributor) reviewing a product after the fact: today "what changed" requires walking merged PRs or GitHub Releases per repo; there is no single in-repo, versioned, skimmable history.

Hypothesis

A generated CHANGELOG.md in each repo root β€” written by the repo's existing release pipeline, never by hand β€” gives an always-current, versioned change history at near-zero ongoing cost.

Success signal

After the next release in each converted repo, its CHANGELOG.md contains that release's entries automatically (no manual step), and the maintainer can answer "what shipped here recently" from the file alone. Guardrail: release pipelines stay green; no release is blocked by changelog generation.

Smallest useful change

Convert ONE semantic-release repo end-to-end and verify a real release writes the file, then roll the proven pattern out per repo family.

Design constraint (decide in the first child)

semantic-release writes CHANGELOG.md via @semantic-release/release-notes-generator + @semantic-release/changelog + @semantic-release/git β€” the git plugin pushes a commit to main, which collides with branch protection/merge queues unless the release identity may bypass. release-please instead delivers the changelog through its release PR (the model actions already proves live). The first child evaluates: extend the semantic-release chain (and solve the protected-main push), or converge repos on release-please, or a hybrid per repo family. Portfolio consistency (shared config in devantler-tech/.github) is preferred over 12 hand-rolled configs.

Scope

  • semantic-release repos (12): ksail, platform, .github, world-at-ruin, ascoachingogvaner, go-template, dotnet-template, platform-template, gitops-tenant-template, aws, wedding-app (+ actions already done via release-please).
  • Repos with no release automation today (monorepo, unifi, provider-upjet-unifi, kyverno-policies, agent-skills, agent-plugins, homebrew-tap, fleet-gitops): each first needs a release pipeline decision β€” decompose separately; do not block the 12 on them.
  • Generated file discipline applies: CHANGELOG.md is never hand-edited; the generator owns it.

Acceptance criteria

  • A recorded decision (first child, Spike-shaped) on the generation mechanism per repo family, with the protected-main constraint resolved.
  • Every active repo with release automation writes CHANGELOG.md automatically on release.
  • Rollout verified per repo by a real release producing the file (not by config review alone).
  • Repos without release automation have their own tracked decision (adopt a pipeline or record why not).

Rough size: L (portfolio-wide; ships as per-repo children off this epic).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Fields

    No fields configured for Epic.

    Projects

    Status
    πŸ“₯ Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions