<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Release-Engineering on Brian Faust</title><link>https://wimdy.works/tags/release-engineering/</link><description>Recent content in Release-Engineering on Brian Faust</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Mon, 01 Jan 0001 00:00:00 +0000</lastBuildDate><atom:link href="https://wimdy.works/tags/release-engineering/rss.xml" rel="self" type="application/rss+xml"/><item><title>From Commit to Changelog: An Intent-Aware Release Pipeline</title><link>https://wimdy.works/thoughts/from-commit-to-changelog/</link><pubDate>Fri, 01 Aug 2025 00:00:00 +0000</pubDate><guid>https://wimdy.works/thoughts/from-commit-to-changelog/</guid><description>&lt;p&gt;Most release processes postpone the important questions. A developer commits a
change, a pull request describes some of it, and somebody adds a changeset
because CI demands a file. Much later, another person opens an &lt;code&gt;Unreleased&lt;/code&gt;
section and tries to reconstruct what users need to know. The tools are
connected by chronology, but not by meaning.&lt;/p&gt;
&lt;p&gt;Release day then becomes an archaeological exercise. The diff still exists,
but the reason, audience, migration path, affected application, and release
judgment are scattered across Git, an issue tracker, review comments, and
somebody&amp;rsquo;s memory. A larger checklist will not fix that. Record each decision
while its evidence is strongest, then carry it through the rest of the delivery
pipeline.&lt;/p&gt;</description></item><item><title>Unreleased Is Not a Junk Drawer</title><link>https://wimdy.works/thoughts/unreleased-is-not-a-junk-drawer/</link><pubDate>Tue, 01 Jul 2025 00:00:00 +0000</pubDate><guid>https://wimdy.works/thoughts/unreleased-is-not-a-junk-drawer/</guid><description>&lt;p&gt;&lt;a href="https://keepachangelog.com/en/1.1.0/" target="_blank" rel="noopener noreferrer external"&gt;&lt;em&gt;Keep a Changelog&lt;/em&gt;&lt;/a&gt;
 got the most important part right: a
changelog is for people. It should explain noteworthy changes instead of
dumping commit history into a Markdown file. I agree with the principle. The
document lifecycle built around it is where my frustration begins.&lt;/p&gt;
&lt;p&gt;The problem becomes most visible under this heading:&lt;/p&gt;
&lt;figure class="code-figure"&gt;
 &lt;div class="code-block" data-copy-code&gt;
 &lt;button class="copy-code" type="button" aria-label="Copy code"&gt;copy&lt;/button&gt;&lt;span class="sr-only" data-copy-status role="status" aria-live="polite"&gt;&lt;/span&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;## Unreleased&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/figure&gt;
&lt;p&gt;The failure mode is easy to recognize. Everything remotely noteworthy goes
there while work is in progress. When a release approaches, somebody finally
decides which application the entries belong to, rewrites their summaries,
moves them under categories, removes internal noise, adds migration notes, and
tries to reconstruct why half of the changes mattered.&lt;/p&gt;</description></item><item><title>A Pull Request Is a Review Narrative, Not a Template</title><link>https://wimdy.works/thoughts/a-pull-request-is-a-review-narrative/</link><pubDate>Sun, 01 Jun 2025 00:00:00 +0000</pubDate><guid>https://wimdy.works/thoughts/a-pull-request-is-a-review-narrative/</guid><description>&lt;p&gt;Most pull-request templates start with good intentions and end as paperwork.&lt;/p&gt;
&lt;p&gt;They ask for a summary, testing instructions, screenshots, a ticket, a risk
assessment, a deployment plan, a rollback plan, and twelve checkboxes. A small
change answers half of them with “not applicable.” A large change fills them
with links. The template is complete, yet the reviewer still has to reverse
engineer the actual decision from the diff.&lt;/p&gt;
&lt;p&gt;Markdown is not the problem. The problem is treating the presence of headings
as proof that communication happened. A pull request has one job: make an
integration decision reviewable. It should tell another engineer what the
repository will become, why that change is necessary, how the proposed design
produces it, why that design was selected, what could go wrong, and what
evidence supports the claims.&lt;/p&gt;</description></item><item><title>Intent Commits: Commit Types Are Not Release Decisions</title><link>https://wimdy.works/thoughts/intent-commits/</link><pubDate>Thu, 01 May 2025 00:00:00 +0000</pubDate><guid>https://wimdy.works/thoughts/intent-commits/</guid><description>&lt;p&gt;Conventional Commits solved a real problem. It gave teams a small shared
grammar for a part of software development that had mostly been left to taste:&lt;/p&gt;
&lt;figure class="code-figure"&gt;
 &lt;div class="code-block" data-copy-code&gt;
 &lt;button class="copy-code" type="button" aria-label="Copy code"&gt;copy&lt;/button&gt;&lt;span class="sr-only" data-copy-status role="status" aria-live="polite"&gt;&lt;/span&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;feat(auth): support passkeys&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/figure&gt;
&lt;p&gt;That line is easy to write, easy to scan, and easy to parse. It is a much
better foundation than histories full of &lt;code&gt;changes&lt;/code&gt;, &lt;code&gt;updates&lt;/code&gt;, and &lt;code&gt;fix stuff&lt;/code&gt;.
It can drive changelogs, release automation, and navigation through an
unfamiliar codebase.&lt;/p&gt;</description></item></channel></rss>