<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="rss.xsl"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>eslint-plugin-runtime-cleanup Blog</title>
        <link>https://nick2bad4u.github.io/eslint-plugin-runtime-cleanup/blog/</link>
        <description>Updates, architecture notes, and practical guidance for eslint-plugin-runtime-cleanup users.</description>
        <lastBuildDate>Wed, 11 Mar 2026 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <copyright>© 2026 Nick2bad4u</copyright>
        <item>
            <title><![CDATA[Keeping Rule Docs and Presets in Sync]]></title>
            <link>https://nick2bad4u.github.io/eslint-plugin-runtime-cleanup/blog/keeping-rule-docs-and-presets-in-sync/</link>
            <guid>https://nick2bad4u.github.io/eslint-plugin-runtime-cleanup/blog/keeping-rule-docs-and-presets-in-sync/</guid>
            <pubDate>Wed, 11 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[How eslint-plugin-runtime-cleanup keeps docs tables, preset matrices, and rule metadata aligned through canonical generators.]]></description>
            <content:encoded><![CDATA[<p>Documentation drift is one of the easiest ways to lose trust in a lint plugin.</p>
<!-- -->
<p>This repository treats metadata-to-doc synchronization as a first-class quality gate, not a best-effort cleanup task.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_Iwt7" id="The-core-principle">The core principle<a href="https://nick2bad4u.github.io/eslint-plugin-runtime-cleanup/blog/keeping-rule-docs-and-presets-in-sync/#The-core-principle" class="hash-link" aria-label="Direct link to The core principle" title="Direct link to The core principle" translate="no">​</a></h2>
<p>Human-written explanation should stay human.</p>
<p>Mechanically derivable data should be generated and tested.</p>
<p>For us, that includes:</p>
<ul>
<li class="">README rules matrix</li>
<li class="">presets rules matrix</li>
<li class="">rule metadata snapshots and integrity contracts</li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_Iwt7" id="What-this-prevents">What this prevents<a href="https://nick2bad4u.github.io/eslint-plugin-runtime-cleanup/blog/keeping-rule-docs-and-presets-in-sync/#What-this-prevents" class="hash-link" aria-label="Direct link to What this prevents" title="Direct link to What this prevents" translate="no">​</a></h2>
<p>Without canonical generation, drift appears quickly:</p>
<ul>
<li class="">rule added to a preset but matrix unchanged</li>
<li class="">fix/suggestion capability changes but docs lag</li>
<li class="">links and IDs diverge between source and docs</li>
</ul>
<p>That leads to wrong migration guidance and unnecessary issue churn.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_Iwt7" id="How-we-enforce-it">How we enforce it<a href="https://nick2bad4u.github.io/eslint-plugin-runtime-cleanup/blog/keeping-rule-docs-and-presets-in-sync/#How-we-enforce-it" class="hash-link" aria-label="Direct link to How we enforce it" title="Direct link to How we enforce it" translate="no">​</a></h2>
<ul>
<li class="">sync scripts produce canonical matrix sections</li>
<li class="">CI checks fail when docs and generated sections diverge</li>
<li class="">docs integrity tests enforce stable heading/catalog conventions</li>
</ul>
<p>The result is less manual bookkeeping and fewer review-time surprises.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_Iwt7" id="Practical-maintenance-advice">Practical maintenance advice<a href="https://nick2bad4u.github.io/eslint-plugin-runtime-cleanup/blog/keeping-rule-docs-and-presets-in-sync/#Practical-maintenance-advice" class="hash-link" aria-label="Direct link to Practical maintenance advice" title="Direct link to Practical maintenance advice" translate="no">​</a></h2>
<p>When changing rules or preset composition:</p>
<ol>
<li class="">update rule source and metadata</li>
<li class="">run matrix sync scripts</li>
<li class="">run docs integrity and snapshot suites</li>
<li class="">only then review prose-level docs edits</li>
</ol>
<p>This ordering keeps intent and generated truth aligned.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_Iwt7" id="Related-docs">Related docs<a href="https://nick2bad4u.github.io/eslint-plugin-runtime-cleanup/blog/keeping-rule-docs-and-presets-in-sync/#Related-docs" class="hash-link" aria-label="Direct link to Related docs" title="Direct link to Related docs" translate="no">​</a></h2>
<ul>
<li class=""><a href="https://nick2bad4u.github.io/eslint-plugin-runtime-cleanup/docs/developer/charts/rule-catalog-and-doc-sync" target="_blank" rel="noopener noreferrer" class="">Rule catalog and docs synchronization chart</a></li>
<li class=""><a href="https://nick2bad4u.github.io/eslint-plugin-runtime-cleanup/docs/developer/charts/preset-composition-and-rule-matrix" target="_blank" rel="noopener noreferrer" class="">Preset composition and rule matrix chart</a></li>
<li class=""><a href="https://nick2bad4u.github.io/eslint-plugin-runtime-cleanup/docs/rules/presets" target="_blank" rel="noopener noreferrer" class="">Presets page</a></li>
</ul>]]></content:encoded>
            <category>eslint</category>
            <category>documentation</category>
            <category>automation</category>
            <category>adr</category>
            <category>quality</category>
        </item>
        <item>
            <title><![CDATA[Type-Aware Linting Without Surprises]]></title>
            <link>https://nick2bad4u.github.io/eslint-plugin-runtime-cleanup/blog/type-aware-linting-without-surprises/</link>
            <guid>https://nick2bad4u.github.io/eslint-plugin-runtime-cleanup/blog/type-aware-linting-without-surprises/</guid>
            <pubDate>Wed, 11 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Practical adoption strategy for typed ESLint rules using guard-first execution and predictable fallbacks.]]></description>
            <content:encoded><![CDATA[<p>Type-aware rules are powerful, but they become noisy fast when parser-service assumptions are unclear.</p>
<!-- -->
<p>The goal is not “run typed rules everywhere immediately.” The goal is predictable behavior under real project conditions.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_Iwt7" id="The-contract-we-want">The contract we want<a href="https://nick2bad4u.github.io/eslint-plugin-runtime-cleanup/blog/type-aware-linting-without-surprises/#The-contract-we-want" class="hash-link" aria-label="Direct link to The contract we want" title="Direct link to The contract we want" translate="no">​</a></h2>
<p>A healthy typed-rule setup has three explicit outcomes:</p>
<ol>
<li class=""><strong>Typed path available</strong>: semantic checks run with parser services + checker.</li>
<li class=""><strong>Optional typed path unavailable</strong>: semantic branch is skipped safely.</li>
<li class=""><strong>Required typed path unavailable</strong>: fail fast with a clear configuration signal.</li>
</ol>
<p>That split keeps failures actionable and prevents silent drift.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_Iwt7" id="Why-guard-first-design-matters">Why guard-first design matters<a href="https://nick2bad4u.github.io/eslint-plugin-runtime-cleanup/blog/type-aware-linting-without-surprises/#Why-guard-first-design-matters" class="hash-link" aria-label="Direct link to Why guard-first design matters" title="Direct link to Why guard-first design matters" translate="no">​</a></h2>
<p>In large codebases, parser-service availability is not uniform:</p>
<ul>
<li class="">different <code>tsconfig</code> scopes</li>
<li class="">mixed package boundaries</li>
<li class="">generated or excluded files</li>
</ul>
<p>Guard-first execution avoids brittle behavior by making typed entry conditions explicit.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_Iwt7" id="Rollout-pattern-that-works">Rollout pattern that works<a href="https://nick2bad4u.github.io/eslint-plugin-runtime-cleanup/blog/type-aware-linting-without-surprises/#Rollout-pattern-that-works" class="hash-link" aria-label="Direct link to Rollout pattern that works" title="Direct link to Rollout pattern that works" translate="no">​</a></h2>
<ul>
<li class="">Start in one folder/package.</li>
<li class="">Measure with <code>--stats</code> before and after enabling typed checks.</li>
<li class="">Promote from <code>warn</code> to <code>error</code> once baseline noise is gone.</li>
<li class="">Expand scope only when performance and diagnostics stay stable.</li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_Iwt7" id="What-to-track">What to track<a href="https://nick2bad4u.github.io/eslint-plugin-runtime-cleanup/blog/type-aware-linting-without-surprises/#What-to-track" class="hash-link" aria-label="Direct link to What to track" title="Direct link to What to track" translate="no">​</a></h2>
<ul>
<li class="">typed-rule error rate tied to config gaps</li>
<li class="">lint runtime deltas after enabling typed presets</li>
<li class="">rule-level hotspots that call checker APIs most often</li>
</ul>
<p>If those stay stable, typed linting remains a quality upgrade instead of a workflow tax.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_Iwt7" id="Related-docs">Related docs<a href="https://nick2bad4u.github.io/eslint-plugin-runtime-cleanup/blog/type-aware-linting-without-surprises/#Related-docs" class="hash-link" aria-label="Direct link to Related docs" title="Direct link to Related docs" translate="no">​</a></h2>
<ul>
<li class=""><a href="https://nick2bad4u.github.io/eslint-plugin-runtime-cleanup/docs/developer/typed-paths" target="_blank" rel="noopener noreferrer" class="">Typed service path inventory</a></li>
<li class=""><a href="https://nick2bad4u.github.io/eslint-plugin-runtime-cleanup/docs/developer/charts/typed-rule-semantic-analysis-flow" target="_blank" rel="noopener noreferrer" class="">Typed rule semantic analysis flow</a></li>
<li class=""><a href="https://nick2bad4u.github.io/eslint-plugin-runtime-cleanup/docs/rules/guides/type-aware-linting-readiness" target="_blank" rel="noopener noreferrer" class="">Type-aware linting readiness guide</a></li>
</ul>]]></content:encoded>
            <category>eslint</category>
            <category>typescript</category>
            <category>parser-services</category>
            <category>architecture</category>
            <category>performance</category>
        </item>
    </channel>
</rss>