<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Linting on Start AI Tools - Presented by Intent Solutions</title><link>https://startaitools.com/tags/linting/</link><description>Recent content in Linting on Start AI Tools - Presented by Intent Solutions</description><generator>Hugo</generator><language>en-US</language><copyright>Intent Solutions. All rights reserved.</copyright><lastBuildDate>Sun, 24 May 2026 07:17:27 -0600</lastBuildDate><atom:link href="https://startaitools.com/tags/linting/index.xml" rel="self" type="application/rss+xml"/><item><title>Self-Expiring Report-Only CI Gates: From Advisory to Enforced</title><link>https://startaitools.com/posts/self-expiring-report-only-ci-gates/</link><pubDate>Sat, 23 May 2026 08:00:00 -0500</pubDate><guid>https://startaitools.com/posts/self-expiring-report-only-ci-gates/</guid><description>&lt;p&gt;Advisory CI gates are where good intentions go to die. A team adds a linter &amp;ldquo;in warning mode for now,&amp;rdquo; and &amp;ldquo;for now&amp;rdquo; becomes forever. The violations scroll past in PR reviews, nobody cleans them, the gate never goes blocking. Six months later the warnings are archaeological noise.&lt;/p&gt;
&lt;p&gt;The pattern that breaks this cycle is simple but mechanical: every report-only gate carries a self-expiring deadline marker — &lt;code&gt;REPORT-ONLY-UNTIL: &amp;lt;date&amp;gt;&lt;/code&gt; — and a meta-gate script fails the build if any gate outlives its deadline. Advisory mode becomes temporary by construction. The second part: organize around one logical concern per PR, bulk-cleaning all violations for that concern in the same commit. Tightly-coupled tools — like eslint and prettier, or ruff and ruff-format — flip together because they share a single run step and a single class of violation. Unrelated gates never share a PR. This keeps each change reviewable and the blame surface small.&lt;/p&gt;</description></item></channel></rss>