<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: WatchTurm</title>
    <description>The latest articles on DEV Community by WatchTurm (@watchturm).</description>
    <link>https://dev.to/watchturm</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3783294%2Fad8e6d99-8fe4-4b12-a0e4-21bb32a04bc9.png</url>
      <title>DEV Community: WatchTurm</title>
      <link>https://dev.to/watchturm</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/watchturm"/>
    <language>en</language>
    <item>
      <title>Why I Built a Release Visibility Layer Instead of Another CI/CD Tool</title>
      <dc:creator>WatchTurm</dc:creator>
      <pubDate>Sat, 21 Feb 2026 00:42:16 +0000</pubDate>
      <link>https://dev.to/watchturm/why-i-built-a-release-visibility-layer-instead-of-another-cicd-tool-45gb</link>
      <guid>https://dev.to/watchturm/why-i-built-a-release-visibility-layer-instead-of-another-cicd-tool-45gb</guid>
      <description>&lt;p&gt;&lt;em&gt;Modern engineering teams don’t struggle with automation anymore.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CI/CD pipelines&lt;/li&gt;
&lt;li&gt;GitOps&lt;/li&gt;
&lt;li&gt;Infrastructure as Code&lt;/li&gt;
&lt;li&gt;Deployment dashboards&lt;/li&gt;
&lt;li&gt;Observability tools&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And yet, one simple question is still surprisingly hard to answer:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is actually running in each environment right now?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Not what should be running.&lt;/li&gt;
&lt;li&gt;Not what the pipeline says was deployed.&lt;/li&gt;
&lt;li&gt;What is actually there.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The problem I kept seeing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In multi-repository environments with multiple stages (DEV, QA, UAT, PROD), release visibility becomes fragmented.&lt;/p&gt;

&lt;p&gt;You end up checking:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub for merged PRs&lt;/li&gt;
&lt;li&gt;CI tool for build numbers&lt;/li&gt;
&lt;li&gt;Deployment logs for environment history&lt;/li&gt;
&lt;li&gt;Jira for scope&lt;/li&gt;
&lt;li&gt;Slack/Teams for context&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is no single control perspective.&lt;/p&gt;

&lt;p&gt;Over time, this leads to what I now call the release visibility gap:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Environment drift becomes normal&lt;/li&gt;
&lt;li&gt;Release managers operate reactively&lt;/li&gt;
&lt;li&gt;Production state is inferred, not verified&lt;/li&gt;
&lt;li&gt;Slack becomes a source of truth&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Nothing is “broken”.&lt;br&gt;
But clarity is gone.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Why I didn’t build another pipeline tool&lt;/p&gt;

&lt;p&gt;There are already great CI/CD tools.&lt;/p&gt;

&lt;p&gt;The issue isn’t automation.&lt;br&gt;
The issue is control above automation.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I wasn’t trying to:&lt;/li&gt;
&lt;li&gt;replace pipelines&lt;/li&gt;
&lt;li&gt;orchestrate deployments&lt;/li&gt;
&lt;li&gt;enforce governance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wanted one thing:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;A consistent, aggregated, environment-level view of release state.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;What I built:&lt;/p&gt;

&lt;p&gt;I built WatchTurm, an open-source release visibility layer.&lt;/p&gt;

&lt;p&gt;At a high level, it works like this:&lt;/p&gt;

&lt;p&gt;Collect metadata from sources like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub&lt;/li&gt;
&lt;li&gt;Jira&lt;/li&gt;
&lt;li&gt;CI system (e.g., TeamCity)&lt;/li&gt;
&lt;li&gt;Project configuration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Generate a single structured snapshot of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;versions&lt;/li&gt;
&lt;li&gt;environments&lt;/li&gt;
&lt;li&gt;linked changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Surface that snapshot in a unified control view.&lt;/p&gt;

&lt;p&gt;No magic.&lt;br&gt;
Just a control layer.&lt;/p&gt;

&lt;p&gt;The goal is simple:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No team should guess what is deployed.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What it is (and what it isn’t)&lt;/p&gt;

&lt;p&gt;WatchTurm is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A visibility layer&lt;/li&gt;
&lt;li&gt;A structured release snapshot&lt;/li&gt;
&lt;li&gt;A control perspective over environments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is not:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A CI/CD replacement&lt;/li&gt;
&lt;li&gt;A deployment engine&lt;/li&gt;
&lt;li&gt;A governance enforcement tool&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s designed to sit above automation, not inside it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why open source?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Because release visibility is not a competitive advantage.&lt;/p&gt;

&lt;p&gt;It’s operational hygiene.&lt;/p&gt;

&lt;p&gt;If more teams treat release control as infrastructure - not as a spreadsheet or Slack thread - we all benefit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The bigger idea: Release Control&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;While building this, I realized something:&lt;/p&gt;

&lt;p&gt;We optimized for speed.&lt;br&gt;
We never formalized control.&lt;/p&gt;

&lt;p&gt;That’s why I’m also documenting the thinking behind this approach under what I call Release Control - a discipline focused on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What version runs where&lt;/li&gt;
&lt;li&gt;How environments differ&lt;/li&gt;
&lt;li&gt;What changed - and why&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not slowing delivery.&lt;br&gt;
Making delivery accountable.&lt;/p&gt;

&lt;p&gt;If this resonates&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you’ve ever asked:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;“&lt;em&gt;Is this really in production?&lt;/em&gt;”&lt;/p&gt;

&lt;p&gt;“&lt;em&gt;Why is QA different from UAT?&lt;/em&gt;”&lt;/p&gt;

&lt;p&gt;“&lt;em&gt;What exactly was included in this release?&lt;/em&gt;”&lt;/p&gt;

&lt;p&gt;You’re probably dealing with the same visibility gap.&lt;/p&gt;

&lt;p&gt;The project is open source here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/WatchTurm/WatchTurm-control-room" rel="noopener noreferrer"&gt;https://github.com/WatchTurm/WatchTurm-control-room&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’d love feedback, criticism, or ideas from people operating in similar environments.&lt;/p&gt;

</description>
      <category>cicd</category>
      <category>github</category>
      <category>opensource</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
