<?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: williamgritti</title>
    <description>The latest articles on DEV Community by williamgritti (@williamgritti).</description>
    <link>https://dev.to/williamgritti</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4120600%2Fa38e2c84-2b22-4c96-8791-776cbdc6c727.png</url>
      <title>DEV Community: williamgritti</title>
      <link>https://dev.to/williamgritti</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/williamgritti"/>
    <language>en</language>
    <item>
      <title>Turn a Vague Bug Report into Evidence a Maintainer Can Rerun</title>
      <dc:creator>williamgritti</dc:creator>
      <pubDate>Fri, 11 Sep 2026 09:36:46 +0000</pubDate>
      <link>https://dev.to/williamgritti/turn-a-vague-bug-report-into-evidence-a-maintainer-can-rerun-4el1</link>
      <guid>https://dev.to/williamgritti/turn-a-vague-bug-report-into-evidence-a-maintainer-can-rerun-4el1</guid>
      <description>&lt;p&gt;“It breaks sometimes on Windows” may describe a real defect, but it does not give a maintainer a testable starting point. The useful transformation is small: turn the report into one trigger, one command, one literal expected result, and one captured actual result.&lt;/p&gt;

&lt;p&gt;This article shows a compact workflow that works with a human maintainer or a coding agent. It does not require uploading source code or diagnostic data to a third-party service.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Write the failing contract first
&lt;/h2&gt;

&lt;p&gt;Start with facts that another person can rerun:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Trigger: one synthetic input
Command: node repro.mjs
Expected: literal value and exit 0
Actual: sanitized output and exit 1
Frequency: 3 failures in 3 clean runs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Avoid “works correctly” and “throws an error.” Record the exact value or exception. If the symptom is intermittent, state the number of attempts and failures.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Remove everything the failure does not need
&lt;/h2&gt;

&lt;p&gt;A minimal reproduction should have one reason to fail. Remove unrelated dependencies, UI, network calls, credentials, production data, and setup steps. Keep a negative control when it helps distinguish the suspected boundary:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;input A -&amp;gt; observed failure
input B -&amp;gt; success
only one relevant condition differs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If removing a component makes the symptom disappear, record that result. It narrows the investigation even when you cannot yet explain the cause.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Capture a small environment block
&lt;/h2&gt;

&lt;p&gt;Include the runtime version, operating-system family, CPU architecture, package manager, and relevant lockfile. Do not paste the whole environment or the values of environment variables.&lt;/p&gt;

&lt;p&gt;Review the output before sharing it. Home-directory names, email addresses, tokens, cookies, customer data, and private repository paths do not belong in a public issue.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Give a coding agent a bounded job
&lt;/h2&gt;

&lt;p&gt;A useful reproduction prompt has an explicit stop condition:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Attempt the reported command in this authorized checkout.
Do not edit production code.
Report the exact command, exit status, expected value, actual value,
and whether the failure reproduced twice from a clean state.
Stop after the evidence is captured.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This keeps reproduction separate from diagnosis and implementation. A passing test in a different harness does not disprove the original report; the command and environment must match the claimed trigger.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Package the evidence for the maintainer
&lt;/h2&gt;

&lt;p&gt;A complete issue can stay short:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;one-sentence symptom;&lt;/li&gt;
&lt;li&gt;exact reproduction steps;&lt;/li&gt;
&lt;li&gt;expected and actual results;&lt;/li&gt;
&lt;li&gt;environment summary;&lt;/li&gt;
&lt;li&gt;frequency and negative control;&lt;/li&gt;
&lt;li&gt;link to the smallest public reproduction;&lt;/li&gt;
&lt;li&gt;limits on what was observed.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The free &lt;strong&gt;OSS Bug Repro Lite&lt;/strong&gt; repository contains a copy-ready GitHub Issue form, a portable &lt;code&gt;REPRO.md&lt;/code&gt;, and a synthetic worked example:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/williamgritti/oss-bug-repro-lite" rel="noopener noreferrer"&gt;https://github.com/williamgritti/oss-bug-repro-lite&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I also made an expanded pack with a local environment collector and sanitizer, Node.js and Python starters, four bounded coding-agent prompts, examples, tests, and checksum verification:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ko-fi.com/s/2c05325e27" rel="noopener noreferrer"&gt;https://ko-fi.com/s/2c05325e27&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The expanded pack is a paid digital product. It runs locally, makes no network requests, and requires Node.js 20 or later for the collector. It organizes evidence; it does not diagnose or fix a bug.&lt;/p&gt;

&lt;p&gt;Built with AI assistance. Each shipped file was individually reviewed. Executable behavior and the packaged artifact were verified with automated tests and clean-extraction checks.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>debugging</category>
      <category>github</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
