<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="atom.xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://nick2bad4u.github.io/eslint-plugin-runtime-cleanup/blog/</id>
    <title>eslint-plugin-runtime-cleanup Blog</title>
    <updated>2026-03-11T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://nick2bad4u.github.io/eslint-plugin-runtime-cleanup/blog/"/>
    <subtitle>Updates, architecture notes, and practical guidance for eslint-plugin-runtime-cleanup users.</subtitle>
    <icon>https://nick2bad4u.github.io/eslint-plugin-runtime-cleanup/img/favicon.ico</icon>
    <rights>© 2026 Nick2bad4u</rights>
    <entry>
        <title type="html"><![CDATA[Keeping Rule Docs and Presets in Sync]]></title>
        <id>https://nick2bad4u.github.io/eslint-plugin-runtime-cleanup/blog/keeping-rule-docs-and-presets-in-sync/</id>
        <link href="https://nick2bad4u.github.io/eslint-plugin-runtime-cleanup/blog/keeping-rule-docs-and-presets-in-sync/"/>
        <updated>2026-03-11T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[How eslint-plugin-runtime-cleanup keeps docs tables, preset matrices, and rule metadata aligned through canonical generators.]]></summary>
        <content type="html"><![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>
        <author>
            <name>Nick2bad4u</name>
            <uri>https://github.com/Nick2bad4u</uri>
        </author>
        <category label="eslint" term="eslint"/>
        <category label="documentation" term="documentation"/>
        <category label="automation" term="automation"/>
        <category label="adr" term="adr"/>
        <category label="quality" term="quality"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Type-Aware Linting Without Surprises]]></title>
        <id>https://nick2bad4u.github.io/eslint-plugin-runtime-cleanup/blog/type-aware-linting-without-surprises/</id>
        <link href="https://nick2bad4u.github.io/eslint-plugin-runtime-cleanup/blog/type-aware-linting-without-surprises/"/>
        <updated>2026-03-11T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Practical adoption strategy for typed ESLint rules using guard-first execution and predictable fallbacks.]]></summary>
        <content type="html"><![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>
        <author>
            <name>Nick2bad4u</name>
            <uri>https://github.com/Nick2bad4u</uri>
        </author>
        <category label="eslint" term="eslint"/>
        <category label="typescript" term="typescript"/>
        <category label="parser-services" term="parser-services"/>
        <category label="architecture" term="architecture"/>
        <category label="performance" term="performance"/>
    </entry>
</feed>