<?xml version="1.0" encoding="UTF-8" ?> <?xml-stylesheet type="text/xsl" href="rss.xsl"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/"> <channel> <title>Adaptive Enforcement Lab</title><description>DevSecOps automation patterns for enterprise-grade GitHub workflows. Battle-tested GitHub App configurations, secure content distribution, and policy enforcement at scale.</description><link>https://adaptive-enforcement-lab.com/</link><atom:link href="https://adaptive-enforcement-lab.com/feed_rss_created.xml" rel="self" type="application/rss+xml" /> <docs>https://github.com/adaptive-enforcement-lab/adaptive-enforcement-lab-com</docs><language>en</language> <pubDate>Tue, 06 Oct 2026 06:11:14 -0000</pubDate> <lastBuildDate>Tue, 06 Oct 2026 06:11:14 -0000</lastBuildDate> <ttl>1440</ttl> <generator>MkDocs RSS plugin - v1.19.0</generator> <image> <url>None</url> <title>Adaptive Enforcement Lab</title> <link>https://adaptive-enforcement-lab.com/</link> </image> <item> <title>The 15-Minute Performance Test</title> <author>Mark Cheret</author> <category>automation</category> <category>ci-cd</category> <category>engineering</category> <description>Learn how to implement a 15-minute performance test in your CI/CD pipeline. Catch regressions early with automated, ephemeral production-scale environments.</description> <link>https://adaptive-enforcement-lab.com/blog/2026/09/13/the-15-minute-performance-test/</link> <pubDate>Sun, 13 Sep 2026 00:00:00 +0000</pubDate> <source url="https://adaptive-enforcement-lab.com/feed_rss_created.xml">Adaptive Enforcement Lab</source><comments>https://adaptive-enforcement-lab.com/blog/2026/09/13/the-15-minute-performance-test/#__comments</comments><guid isPermaLink="true">https://adaptive-enforcement-lab.com/blog/2026/09/13/the-15-minute-performance-test/</guid> <enclosure url="https://adaptive-enforcement-lab.com/assets/images/social/blog/2026/09/13/the-15-minute-performance-test.png" type="image/png" length="58354" /> </item> <item> <title>From 220 Lines of Debt to a Single CI Template</title> <author>Mark Cheret</author> <category>CI/CD</category> <category>DevOps</category> <category>Engineering</category> <description>A recent CI update cut 220 lines of debt to 50, standardizing our deployment tooling. It&#39;s the result of a year-long strategy for centralized CI/CD.</description> <link>https://adaptive-enforcement-lab.com/blog/2026/09/10/from-220-lines-of-debt-to-a-single-ci-template/</link> <pubDate>Thu, 10 Sep 2026 00:00:00 +0000</pubDate> <source url="https://adaptive-enforcement-lab.com/feed_rss_created.xml">Adaptive Enforcement Lab</source><comments>https://adaptive-enforcement-lab.com/blog/2026/09/10/from-220-lines-of-debt-to-a-single-ci-template/#__comments</comments><guid isPermaLink="true">https://adaptive-enforcement-lab.com/blog/2026/09/10/from-220-lines-of-debt-to-a-single-ci-template/</guid> <enclosure url="https://adaptive-enforcement-lab.com/assets/images/social/blog/2026/09/10/from-220-lines-of-debt-to-a-single-ci-template.png" type="image/png" length="69516" /> </item> <item> <title>The Verified Layout That Wasn&#39;t</title> <author>Mark Cheret</author> <category>architecture</category> <category>data-engineering</category> <category>documentation</category> <description>A documentation block labeled &#34;verified layout&#34; for our data bus had drifted significantly, missing a critical namespace governed by an enforced contract.</description> <link>https://adaptive-enforcement-lab.com/blog/2026/09/04/the-verified-layout-that-wasnt/</link> <pubDate>Fri, 04 Sep 2026 00:00:00 +0000</pubDate> <source url="https://adaptive-enforcement-lab.com/feed_rss_created.xml">Adaptive Enforcement Lab</source><comments>https://adaptive-enforcement-lab.com/blog/2026/09/04/the-verified-layout-that-wasnt/#__comments</comments><guid isPermaLink="true">https://adaptive-enforcement-lab.com/blog/2026/09/04/the-verified-layout-that-wasnt/</guid> <enclosure url="https://adaptive-enforcement-lab.com/assets/images/social/blog/2026/09/04/the-verified-layout-that-wasnt.png" type="image/png" length="56683" /> </item> <item> <title>One Branch to Rule Them All</title> <author>Mark Cheret</author> <category>automation</category> <category>engineering</category> <category>go</category> <description>Several automated dependency update pull requests, each conflicting. The path to a clean merge wasn&#39;t through them, but around them.</description> <link>https://adaptive-enforcement-lab.com/blog/2026/09/03/one-branch-to-rule-them-all/</link> <pubDate>Thu, 03 Sep 2026 00:00:00 +0000</pubDate> <source url="https://adaptive-enforcement-lab.com/feed_rss_created.xml">Adaptive Enforcement Lab</source><comments>https://adaptive-enforcement-lab.com/blog/2026/09/03/one-branch-to-rule-them-all/#__comments</comments><guid isPermaLink="true">https://adaptive-enforcement-lab.com/blog/2026/09/03/one-branch-to-rule-them-all/</guid> <enclosure url="https://adaptive-enforcement-lab.com/assets/images/social/blog/2026/09/03/one-branch-to-rule-them-all.png" type="image/png" length="55794" /> </item> <item> <title>The Day One Repo Became Forty</title> <author>Mark Cheret</author> <category>devops</category> <category>gitops</category> <category>kubernetes</category> <description>One repo built for a single cluster grew into config for forty. Here&#39;s the week copy-paste caught up with us, and how we finally trusted what was running.</description> <link>https://adaptive-enforcement-lab.com/blog/2026/08/23/the-day-one-repo-became-forty/</link> <pubDate>Sun, 23 Aug 2026 00:00:00 +0000</pubDate> <source url="https://adaptive-enforcement-lab.com/feed_rss_created.xml">Adaptive Enforcement Lab</source><comments>https://adaptive-enforcement-lab.com/blog/2026/08/23/the-day-one-repo-became-forty/#__comments</comments><guid isPermaLink="true">https://adaptive-enforcement-lab.com/blog/2026/08/23/the-day-one-repo-became-forty/</guid> <enclosure url="https://adaptive-enforcement-lab.com/assets/images/social/blog/2026/08/23/the-day-one-repo-became-forty.png" type="image/png" length="61512" /> </item> <item> <title>The CI Job That Replaced Our Release Committee</title> <author>Mark Cheret</author> <category>CI/CD</category> <category>Compliance</category> <category>DevOps</category> <description>The Tuesday 10 AM release-review meeting was gone. In its place was a single, green checkmark in a pull request: `release-process-compliance: success`.</description> <link>https://adaptive-enforcement-lab.com/blog/2026/08/23/ci-job-replaced-release-committee/</link> <pubDate>Sun, 23 Aug 2026 00:00:00 +0000</pubDate> <source url="https://adaptive-enforcement-lab.com/feed_rss_created.xml">Adaptive Enforcement Lab</source><comments>https://adaptive-enforcement-lab.com/blog/2026/08/23/ci-job-replaced-release-committee/#__comments</comments><guid isPermaLink="true">https://adaptive-enforcement-lab.com/blog/2026/08/23/ci-job-replaced-release-committee/</guid> <enclosure url="https://adaptive-enforcement-lab.com/assets/images/social/blog/2026/08/23/ci-job-replaced-release-committee.png" type="image/png" length="69063" /> </item> <item> <title>The Boolean That Lied</title> <author>Mark Cheret</author> <category>Best Practices</category> <category>CI/CD</category> <category>Software Engineering</category> <description>IS_RELEASE_CANDIDATE=false shipped to production anyway. The string &#34;false&#34; evaluated as truthy. Here&#39;s how we stopped trusting booleans in CI.</description> <link>https://adaptive-enforcement-lab.com/blog/2026/08/14/the-boolean-that-lied/</link> <pubDate>Fri, 14 Aug 2026 00:00:00 +0000</pubDate> <source url="https://adaptive-enforcement-lab.com/feed_rss_created.xml">Adaptive Enforcement Lab</source><comments>https://adaptive-enforcement-lab.com/blog/2026/08/14/the-boolean-that-lied/#__comments</comments><guid isPermaLink="true">https://adaptive-enforcement-lab.com/blog/2026/08/14/the-boolean-that-lied/</guid> <enclosure url="https://adaptive-enforcement-lab.com/assets/images/social/blog/2026/08/14/the-boolean-that-lied.png" type="image/png" length="53979" /> </item> <item> <title>Automating Trust: Component Identity and Release Audits</title> <author>Mark Cheret</author> <category>automation</category> <category>compliance</category> <category>security</category> <description>Before our recent platform deployment, a near-miss with an unidentified component highlighted a critical gap in our manual compliance checks.</description> <link>https://adaptive-enforcement-lab.com/blog/2026/08/13/automating-trust-component-identity-release-audits/</link> <pubDate>Thu, 13 Aug 2026 00:00:00 +0000</pubDate> <source url="https://adaptive-enforcement-lab.com/feed_rss_created.xml">Adaptive Enforcement Lab</source><comments>https://adaptive-enforcement-lab.com/blog/2026/08/13/automating-trust-component-identity-release-audits/#__comments</comments><guid isPermaLink="true">https://adaptive-enforcement-lab.com/blog/2026/08/13/automating-trust-component-identity-release-audits/</guid> <enclosure url="https://adaptive-enforcement-lab.com/assets/images/social/blog/2026/08/13/automating-trust-component-identity-release-audits.png" type="image/png" length="70056" /> </item> <item> <title>The Untagged Outage</title> <author>Mark Cheret</author> <category>Governance</category> <category>Infrastructure</category> <category>Operations</category> <description>An outage turned into a scavenger hunt for who owned a dead data store. That&#39;s when ownership and criticality labels stopped being optional.</description> <link>https://adaptive-enforcement-lab.com/blog/2026/08/12/untagged-outage/</link> <pubDate>Wed, 12 Aug 2026 00:00:00 +0000</pubDate> <source url="https://adaptive-enforcement-lab.com/feed_rss_created.xml">Adaptive Enforcement Lab</source><comments>https://adaptive-enforcement-lab.com/blog/2026/08/12/untagged-outage/#__comments</comments><guid isPermaLink="true">https://adaptive-enforcement-lab.com/blog/2026/08/12/untagged-outage/</guid> <enclosure url="https://adaptive-enforcement-lab.com/assets/images/social/blog/2026/08/12/untagged-outage.png" type="image/png" length="53950" /> </item> <item> <title>Speeding Up CI: The &#39;Detect&#39; Job Pattern</title> <author>Mark Cheret</author> <category>Continuous Integration</category> <category>DevOps</category> <category>Pipeline Optimization</category> <description>I once watched a critical CI pipeline chew through resources for minutes, only to declare &#39;nothing to audit.&#39; That&#39;s when I realized we needed a better gate.</description> <link>https://adaptive-enforcement-lab.com/blog/2026/08/11/speeding-up-ci-the-detect-job-pattern/</link> <pubDate>Tue, 11 Aug 2026 00:00:00 +0000</pubDate> <source url="https://adaptive-enforcement-lab.com/feed_rss_created.xml">Adaptive Enforcement Lab</source><comments>https://adaptive-enforcement-lab.com/blog/2026/08/11/speeding-up-ci-the-detect-job-pattern/#__comments</comments><guid isPermaLink="true">https://adaptive-enforcement-lab.com/blog/2026/08/11/speeding-up-ci-the-detect-job-pattern/</guid> <enclosure url="https://adaptive-enforcement-lab.com/assets/images/social/blog/2026/08/11/speeding-up-ci-the-detect-job-pattern.png" type="image/png" length="62145" /> </item> <item> <title>Operator RBAC from Code Markers</title> <author>Mark Cheret</author> <category>kubernetes</category> <category>operators</category> <category>rbac</category> <description>Our team struggled with complex RBAC rules for our integration testing operator. Manual YAML updates for every change were error-prone and slow.</description> <link>https://adaptive-enforcement-lab.com/blog/2026/08/10/operator-rbac-from-code-markers/</link> <pubDate>Mon, 10 Aug 2026 00:00:00 +0000</pubDate> <source url="https://adaptive-enforcement-lab.com/feed_rss_created.xml">Adaptive Enforcement Lab</source><comments>https://adaptive-enforcement-lab.com/blog/2026/08/10/operator-rbac-from-code-markers/#__comments</comments><guid isPermaLink="true">https://adaptive-enforcement-lab.com/blog/2026/08/10/operator-rbac-from-code-markers/</guid> <enclosure url="https://adaptive-enforcement-lab.com/assets/images/social/blog/2026/08/10/operator-rbac-from-code-markers.png" type="image/png" length="67790" /> </item> <item> <title>The Monday Morning PR Wall</title> <author>Mark Cheret</author> <category>Automation</category> <category>Dependency Management</category> <category>DevOps</category> <description>A 70-PR dependency backlog forced us to automate Renovate triage with labels. Here&#39;s what changed.</description> <link>https://adaptive-enforcement-lab.com/blog/2026/08/10/the-monday-morning-pr-wall/</link> <pubDate>Mon, 10 Aug 2026 00:00:00 +0000</pubDate> <source url="https://adaptive-enforcement-lab.com/feed_rss_created.xml">Adaptive Enforcement Lab</source><comments>https://adaptive-enforcement-lab.com/blog/2026/08/10/the-monday-morning-pr-wall/#__comments</comments><guid isPermaLink="true">https://adaptive-enforcement-lab.com/blog/2026/08/10/the-monday-morning-pr-wall/</guid> <enclosure url="https://adaptive-enforcement-lab.com/assets/images/social/blog/2026/08/10/the-monday-morning-pr-wall.png" type="image/png" length="58787" /> </item> <item> <title>The Cold Sweat Deploy</title> <author>Mark Cheret</author> <category>devops</category> <category>gitops</category> <category>kubernetes</category> <description>A failed midnight deploy taught us why GitOps beats scripted kubectl apply across a growing fleet of Kubernetes clusters.</description> <link>https://adaptive-enforcement-lab.com/blog/2026/08/09/the-cold-sweat-deploy/</link> <pubDate>Sun, 09 Aug 2026 00:00:00 +0000</pubDate> <source url="https://adaptive-enforcement-lab.com/feed_rss_created.xml">Adaptive Enforcement Lab</source><comments>https://adaptive-enforcement-lab.com/blog/2026/08/09/the-cold-sweat-deploy/#__comments</comments><guid isPermaLink="true">https://adaptive-enforcement-lab.com/blog/2026/08/09/the-cold-sweat-deploy/</guid> <enclosure url="https://adaptive-enforcement-lab.com/assets/images/social/blog/2026/08/09/the-cold-sweat-deploy.png" type="image/png" length="58718" /> </item> <item> <title>The Docs Nobody Read</title> <author>Mark Cheret</author> <category>AI Agents</category> <category>DevSecOps</category> <category>Developer Tools</category> <category>Documentation</category> <description>Writing documentation is an act of hope. Hope is not a delivery mechanism. So the docs learned to install themselves.</description> <link>https://adaptive-enforcement-lab.com/blog/2026/07/21/docs-nobody-read/</link> <pubDate>Tue, 21 Jul 2026 00:00:00 +0000</pubDate> <source url="https://adaptive-enforcement-lab.com/feed_rss_created.xml">Adaptive Enforcement Lab</source><comments>https://adaptive-enforcement-lab.com/blog/2026/07/21/docs-nobody-read/#__comments</comments><guid isPermaLink="true">https://adaptive-enforcement-lab.com/blog/2026/07/21/docs-nobody-read/</guid> <enclosure url="https://adaptive-enforcement-lab.com/assets/images/social/blog/2026/07/21/docs-nobody-read.png" type="image/png" length="55473" /> </item> <item> <title>The Security Team That Became Invisible</title> <author>Mark Cheret</author> <category>Culture</category> <category>DevOps</category> <category>Security</category> <description>When security stops being the bottleneck. The culture playbook that made security everyone&#39;s job (and nobody&#39;s blocker).</description> <link>https://adaptive-enforcement-lab.com/blog/2026/01/07/security-team-became-invisible/</link> <pubDate>Wed, 07 Jan 2026 00:00:00 +0000</pubDate> <source url="https://adaptive-enforcement-lab.com/feed_rss_created.xml">Adaptive Enforcement Lab</source><comments>https://adaptive-enforcement-lab.com/blog/2026/01/07/security-team-became-invisible/#__comments</comments><guid isPermaLink="true">https://adaptive-enforcement-lab.com/blog/2026/01/07/security-team-became-invisible/</guid> <enclosure url="https://adaptive-enforcement-lab.com/assets/images/social/blog/2026/01/07/security-team-became-invisible.png" type="image/png" length="62924" /> </item> <item> <title>The Chaos That Proved We Were Ready</title> <author>Mark Cheret</author> <category>Kubernetes</category> <category>Reliability</category> <category>Testing</category> <description>When chaos engineering finds the incident before production does. The pod deletion that validated our operational resilience.</description> <link>https://adaptive-enforcement-lab.com/blog/2026/01/06/chaos-proved-we-were-ready/</link> <pubDate>Tue, 06 Jan 2026 00:00:00 +0000</pubDate> <source url="https://adaptive-enforcement-lab.com/feed_rss_created.xml">Adaptive Enforcement Lab</source><comments>https://adaptive-enforcement-lab.com/blog/2026/01/06/chaos-proved-we-were-ready/#__comments</comments><guid isPermaLink="true">https://adaptive-enforcement-lab.com/blog/2026/01/06/chaos-proved-we-were-ready/</guid> <enclosure url="https://adaptive-enforcement-lab.com/assets/images/social/blog/2026/01/06/chaos-proved-we-were-ready.png" type="image/png" length="61217" /> </item> <item> <title>The Last Service Account Key</title> <author>Mark Cheret</author> <category>Cloud Security</category> <category>GCP</category> <category>Kubernetes</category> <description>When you delete the last JSON key file from production. The Workload Identity migration that eliminated credential leaks forever.</description> <link>https://adaptive-enforcement-lab.com/blog/2026/01/05/last-service-account-key/</link> <pubDate>Mon, 05 Jan 2026 00:00:00 +0000</pubDate> <source url="https://adaptive-enforcement-lab.com/feed_rss_created.xml">Adaptive Enforcement Lab</source><comments>https://adaptive-enforcement-lab.com/blog/2026/01/05/last-service-account-key/#__comments</comments><guid isPermaLink="true">https://adaptive-enforcement-lab.com/blog/2026/01/05/last-service-account-key/</guid> <enclosure url="https://adaptive-enforcement-lab.com/assets/images/social/blog/2026/01/05/last-service-account-key.png" type="image/png" length="60052" /> </item> <item> <title>The Architecture That Couldn&#39;t Be Breached</title> <author>Mark Cheret</author> <category>Architecture</category> <category>Kubernetes</category> <category>Security</category> <description>When container escape meets defense in depth. The secure-by-design patterns that contained the breach before it started.</description> <link>https://adaptive-enforcement-lab.com/blog/2026/01/04/architecture-couldnt-be-breached/</link> <pubDate>Sun, 04 Jan 2026 00:00:00 +0000</pubDate> <source url="https://adaptive-enforcement-lab.com/feed_rss_created.xml">Adaptive Enforcement Lab</source><comments>https://adaptive-enforcement-lab.com/blog/2026/01/04/architecture-couldnt-be-breached/#__comments</comments><guid isPermaLink="true">https://adaptive-enforcement-lab.com/blog/2026/01/04/architecture-couldnt-be-breached/</guid> <enclosure url="https://adaptive-enforcement-lab.com/assets/images/social/blog/2026/01/04/architecture-couldnt-be-breached.png" type="image/png" length="62146" /> </item> <item> <title>The CVE That Didn&#39;t Matter (And The One That Did)</title> <author>Mark Cheret</author> <category>DevOps</category> <category>Risk Management</category> <category>Security</category> <description>When CVSS 9.8 doesn&#39;t mean drop everything. The risk framework that taught engineers to think, not panic.</description> <link>https://adaptive-enforcement-lab.com/blog/2026/01/03/cve-that-didnt-matter/</link> <pubDate>Sat, 03 Jan 2026 00:00:00 +0000</pubDate> <source url="https://adaptive-enforcement-lab.com/feed_rss_created.xml">Adaptive Enforcement Lab</source><comments>https://adaptive-enforcement-lab.com/blog/2026/01/03/cve-that-didnt-matter/#__comments</comments><guid isPermaLink="true">https://adaptive-enforcement-lab.com/blog/2026/01/03/cve-that-didnt-matter/</guid> <enclosure url="https://adaptive-enforcement-lab.com/assets/images/social/blog/2026/01/03/cve-that-didnt-matter.png" type="image/png" length="68263" /> </item> <item> <title>The GKE Cluster That Nobody Could Break</title> <author>Mark Cheret</author> <category>Cloud Security</category> <category>GCP</category> <category>Kubernetes</category> <description>When penetration testers give up after 3 days. The GKE hardening guide that turned a cluster into a fortress.</description> <link>https://adaptive-enforcement-lab.com/blog/2026/01/02/gke-cluster-nobody-could-break/</link> <pubDate>Fri, 02 Jan 2026 00:00:00 +0000</pubDate> <source url="https://adaptive-enforcement-lab.com/feed_rss_created.xml">Adaptive Enforcement Lab</source><comments>https://adaptive-enforcement-lab.com/blog/2026/01/02/gke-cluster-nobody-could-break/#__comments</comments><guid isPermaLink="true">https://adaptive-enforcement-lab.com/blog/2026/01/02/gke-cluster-nobody-could-break/</guid> <enclosure url="https://adaptive-enforcement-lab.com/assets/images/social/blog/2026/01/02/gke-cluster-nobody-could-break.png" type="image/png" length="63223" /> </item> </channel> </rss>