<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" xml:lang="en-US">
  <id>tag:github.com,2008:https://github.com/patchrail/patchrail/releases</id>
  <link type="text/html" rel="alternate" href="https://github.com/patchrail/patchrail/releases"/>
  <link type="application/atom+xml" rel="self" href="https://github.com/patchrail/patchrail/releases.atom"/>
  <title>Tags from patchrail</title>
  <updated>2026-07-22T19:28:28Z</updated>
  <entry>
    <id>tag:github.com,2008:Repository/1257620736/v0.7.6</id>
    <updated>2026-07-22T19:28:57Z</updated>
    <link rel="alternate" type="text/html" href="https://github.com/patchrail/patchrail/releases/tag/v0.7.6"/>
    <title>v0.7.6</title>
    <content></content>
    <author>
      <name>PabloCodes7</name>
    </author>
    <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/284438953?s=60&amp;v=4"/>
  </entry>
  <entry>
    <id>tag:github.com,2008:Repository/1257620736/v0.7.5</id>
    <updated>2026-07-22T13:04:08Z</updated>
    <link rel="alternate" type="text/html" href="https://github.com/patchrail/patchrail/releases/tag/v0.7.5"/>
    <title>v0.7.5</title>
    <content type="html">&lt;p&gt;release: 0.7.5 (&lt;a class=&quot;issue-link js-issue-link&quot; href=&quot;https://github.com/patchrail/patchrail/pull/398&quot;&gt;#398&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Cut 0.7.5 from main. 0.7.4 (2026-07-22) capped the confidence of a verdict held
&lt;br /&gt;up by tool invocations alone, but it shipped that cap while the reports still
&lt;br /&gt;printed `Root cause: &amp;lt;class&amp;gt;` / `Confidence: 0.3` in the same shape as a 0.95.
&lt;br /&gt;The number dropped, the message didn&#39;t — so a maintainer who runs
&lt;br /&gt;`pip install patchrail` today still reads &quot;root cause&quot; under a verdict PatchRail
&lt;br /&gt;itself does not trust, and goes off to fix a file that is fine.&lt;/p&gt;

&lt;p&gt;&lt;a class=&quot;commit-link&quot; href=&quot;https://github.com/patchrail/patchrail/commit/b66fb4cf939ba7e02d2e0f99563fad0a7a692071&quot;&gt;&lt;tt&gt;b66fb4c&lt;/tt&gt;&lt;/a&gt; fixed the message in both human-facing renderers and has been sitting on
&lt;br /&gt;main, unreleased, since it merged. This release is that one fix: a report below
&lt;br /&gt;LOW_CONFIDENCE_THRESHOLD (0.35) now says in prose that it is a hint rather than a
&lt;br /&gt;proven cause, that its signals only show a tool ran, and where to look next.
&lt;br /&gt;Presentation only — class, confidence, exit code and the `--format json` payload
&lt;br /&gt;the GitHub Action consumes are untouched, and a high-confidence report is
&lt;br /&gt;byte-identical to 0.7.4.&lt;/p&gt;

&lt;p&gt;Version bumped in the five places that spell it out (pyproject, __init__, README
&lt;br /&gt;quickstart, uv.lock, the benchmark&#39;s release-status line) and CHANGELOG&#39;s
&lt;br /&gt;Unreleased section dated.&lt;/p&gt;

&lt;p&gt;Co-authored-by: PabloCodes7 &amp;lt;hello@getpatchrail.com&amp;gt;&lt;/p&gt;</content>
    <author>
      <name>PabloCodes7</name>
    </author>
    <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/284438953?s=60&amp;v=4"/>
  </entry>
  <entry>
    <id>tag:github.com,2008:Repository/1257620736/v0.7.4</id>
    <updated>2026-07-21T23:01:09Z</updated>
    <link rel="alternate" type="text/html" href="https://github.com/patchrail/patchrail/releases/tag/v0.7.4"/>
    <title>v0.7.4</title>
    <content type="html">&lt;p&gt;release: 0.7.4 (&lt;a class=&quot;issue-link js-issue-link&quot; href=&quot;https://github.com/patchrail/patchrail/pull/396&quot;&gt;#396&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Cut 0.7.4 from main. The last release, 0.7.3 (2026-07-16), predates ten
&lt;br /&gt;false-positive fixes that are sitting on main and not on PyPI: an installed
&lt;br /&gt;pytest read as a failing test run (&lt;a class=&quot;issue-link js-issue-link&quot; href=&quot;https://github.com/patchrail/patchrail/pull/376&quot;&gt;#376&lt;/a&gt;), a passing test&#39;s title read as a
&lt;br /&gt;secrets failure (&lt;a class=&quot;issue-link js-issue-link&quot; href=&quot;https://github.com/patchrail/patchrail/pull/380&quot;&gt;#380&lt;/a&gt;), a PHPUnit assertion read as a Composer failure (&lt;a class=&quot;issue-link js-issue-link&quot; href=&quot;https://github.com/patchrail/patchrail/pull/378&quot;&gt;#378&lt;/a&gt;),
&lt;br /&gt;Flutter&#39;s cached Gradle Wrapper (&lt;a class=&quot;issue-link js-issue-link&quot; href=&quot;https://github.com/patchrail/patchrail/pull/382&quot;&gt;#382&lt;/a&gt;), Cabal&#39;s dependency resolution read as
&lt;br /&gt;Maven (&lt;a class=&quot;issue-link js-issue-link&quot; href=&quot;https://github.com/patchrail/patchrail/pull/383&quot;&gt;#383&lt;/a&gt;), Crystal and dune&#39;s make targets read as C/C++ (&lt;a class=&quot;issue-link js-issue-link&quot; href=&quot;https://github.com/patchrail/patchrail/pull/384&quot;&gt;#384&lt;/a&gt;, &lt;a class=&quot;issue-link js-issue-link&quot; href=&quot;https://github.com/patchrail/patchrail/pull/385&quot;&gt;#385&lt;/a&gt;), a
&lt;br /&gt;parenthesized 504 (&lt;a class=&quot;issue-link js-issue-link&quot; href=&quot;https://github.com/patchrail/patchrail/pull/391&quot;&gt;#391&lt;/a&gt;), mypy in a pixi manifest (&lt;a class=&quot;issue-link js-issue-link&quot; href=&quot;https://github.com/patchrail/patchrail/pull/390&quot;&gt;#390&lt;/a&gt;), an unset TERM read as
&lt;br /&gt;a missing secret (&lt;a class=&quot;issue-link js-issue-link&quot; href=&quot;https://github.com/patchrail/patchrail/pull/392&quot;&gt;#392&lt;/a&gt;), a warning-only yarn install and a recovered checkout
&lt;br /&gt;(&lt;a class=&quot;issue-link js-issue-link&quot; href=&quot;https://github.com/patchrail/patchrail/pull/393&quot;&gt;#393&lt;/a&gt;), and a verdict held up by invocations alone reporting diagnosis-level
&lt;br /&gt;confidence (&lt;a class=&quot;issue-link js-issue-link&quot; href=&quot;https://github.com/patchrail/patchrail/pull/395&quot;&gt;#395&lt;/a&gt;). Every one of those is a wrong answer a maintainer gets today
&lt;br /&gt;from pip install patchrail.&lt;/p&gt;

&lt;p&gt;Version bumped in the four places that spell it out (pyproject, __init__,
&lt;br /&gt;README quickstart, uv.lock), CHANGELOG&#39;s Unreleased section dated, and the
&lt;br /&gt;real-world benchmark&#39;s release-status paragraph corrected: it no longer claims
&lt;br /&gt;six fixes are unreleased.&lt;/p&gt;

&lt;p&gt;Co-authored-by: PabloCodes7 &amp;lt;hello@getpatchrail.com&amp;gt;&lt;/p&gt;</content>
    <author>
      <name>PabloCodes7</name>
    </author>
    <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/284438953?s=60&amp;v=4"/>
  </entry>
  <entry>
    <id>tag:github.com,2008:Repository/1257620736/v0.7.3</id>
    <updated>2026-07-16T02:34:18Z</updated>
    <link rel="alternate" type="text/html" href="https://github.com/patchrail/patchrail/releases/tag/v0.7.3"/>
    <title>v0.7.3</title>
    <content type="html">&lt;p&gt;release: 0.7.3 (&lt;a class=&quot;issue-link js-issue-link&quot; href=&quot;https://github.com/patchrail/patchrail/pull/369&quot;&gt;#369&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Co-authored-by: PabloCodes7 &amp;lt;hello@getpatchrail.com&amp;gt;&lt;/p&gt;</content>
    <author>
      <name>PabloCodes7</name>
    </author>
    <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/284438953?s=60&amp;v=4"/>
  </entry>
  <entry>
    <id>tag:github.com,2008:Repository/1257620736/v0.7.2</id>
    <updated>2026-07-15T08:03:13Z</updated>
    <link rel="alternate" type="text/html" href="https://github.com/patchrail/patchrail/releases/tag/v0.7.2"/>
    <title>v0.7.2</title>
    <content type="html">&lt;p&gt;release: 0.7.2 (&lt;a class=&quot;issue-link js-issue-link&quot; href=&quot;https://github.com/patchrail/patchrail/pull/362&quot;&gt;#362&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Co-authored-by: PabloCodes7 &amp;lt;hello@getpatchrail.com&amp;gt;&lt;/p&gt;</content>
    <author>
      <name>PabloCodes7</name>
    </author>
    <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/284438953?s=60&amp;v=4"/>
  </entry>
  <entry>
    <id>tag:github.com,2008:Repository/1257620736/v0.7.1</id>
    <updated>2026-07-14T22:05:54Z</updated>
    <link rel="alternate" type="text/html" href="https://github.com/patchrail/patchrail/releases/tag/v0.7.1"/>
    <title>v0.7.1</title>
    <content type="html">&lt;p&gt;release: 0.7.1 (&lt;a class=&quot;issue-link js-issue-link&quot; href=&quot;https://github.com/patchrail/patchrail/pull/356&quot;&gt;#356&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Co-authored-by: PabloCodes7 &amp;lt;PabloCodes7@users.noreply.github.com&amp;gt;&lt;/p&gt;</content>
    <author>
      <name>PabloCodes7</name>
    </author>
    <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/284438953?s=60&amp;v=4"/>
  </entry>
  <entry>
    <id>tag:github.com,2008:Repository/1257620736/v0.7.0</id>
    <updated>2026-07-14T20:33:47Z</updated>
    <link rel="alternate" type="text/html" href="https://github.com/patchrail/patchrail/releases/tag/v0.7.0"/>
    <title>v0.7.0 — nine fixes for one mistake</title>
    <content type="html">&lt;p&gt;release: 0.7.0 — nine fixes for one mistake (&lt;a class=&quot;issue-link js-issue-link&quot; href=&quot;https://github.com/patchrail/patchrail/pull/351&quot;&gt;#351&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Since 0.6.1, nine fixes landed on main and PyPI has none of them. All nine are
&lt;br /&gt;the same mistake: a line that NAMES a tool read as a line proving that tool
&lt;br /&gt;FAILED. An install listing, an echoed script, a suppressible CMake warning, a
&lt;br /&gt;cache cleaning up after a job that was already dead, a test quoting a compiler
&lt;br /&gt;back at itself.&lt;/p&gt;

&lt;p&gt;The CHANGELOG was missing an entry for one of them (&lt;a class=&quot;issue-link js-issue-link&quot; href=&quot;https://github.com/patchrail/patchrail/issues/336&quot;&gt;#336&lt;/a&gt;, the echoed step
&lt;br /&gt;source), so it is written here from a measurement, not from the commit message:
&lt;br /&gt;0.6.1 reads ruff&#39;s Rust panic as `python_test_failure` at 0.53, carried by
&lt;br /&gt;`FAILED .*::` matching the text `Failed to install CodSpeed CLI::` inside an
&lt;br /&gt;error branch belonging to a download that succeeded. main reports
&lt;br /&gt;`rust_test_failure`. The new docs/real-world-benchmark.md gets an Added entry.&lt;/p&gt;

&lt;p&gt;Version bumped in all four places test_version_consistency ties together
&lt;br /&gt;(pyproject, __version__, the README quickstart line, uv.lock) -- the README
&lt;br /&gt;line is the one that broke the 0.6.1 release CI.&lt;/p&gt;

&lt;p&gt;898 passed on Python 3.12, ruff/format/mypy clean, benchmark 221/221 with 0
&lt;br /&gt;failures.&lt;/p&gt;

&lt;p&gt;Co-authored-by: PabloCodes7 &amp;lt;pablocodes7@users.noreply.github.com&amp;gt;&lt;/p&gt;</content>
    <author>
      <name>PabloCodes7</name>
    </author>
    <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/284438953?s=60&amp;v=4"/>
  </entry>
  <entry>
    <id>tag:github.com,2008:Repository/1257620736/v0.6.1</id>
    <updated>2026-07-14T13:24:41Z</updated>
    <link rel="alternate" type="text/html" href="https://github.com/patchrail/patchrail/releases/tag/v0.6.1"/>
    <title>v0.6.1</title>
    <content type="html">&lt;p&gt;release: 0.6.1 (&lt;a class=&quot;issue-link js-issue-link&quot; href=&quot;https://github.com/patchrail/patchrail/pull/331&quot;&gt;#331&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;* release: 0.6.1&lt;/p&gt;

&lt;p&gt;Ships the &lt;a class=&quot;issue-link js-issue-link&quot; href=&quot;https://github.com/patchrail/patchrail/issues/329&quot;&gt;#329&lt;/a&gt; fix: an  annotation that announces a success is no
&lt;br /&gt;longer handed back as somewhere to start. The Action pins patchrail
&lt;br /&gt;&amp;gt;=0.6.0,&amp;lt;0.7.0 and surfaces runner_errors as PR annotations, so its users pick
&lt;br /&gt;this up on the next run without changing anything.&lt;/p&gt;

&lt;p&gt;* release: point the README quickstart at 0.6.1&lt;/p&gt;

&lt;p&gt;The version-consistency test guards that the quickstart advertises the version
&lt;br /&gt;that actually ships; it caught the bump leaving the README behind.&lt;/p&gt;

&lt;p&gt;---------&lt;/p&gt;

&lt;p&gt;Co-authored-by: PabloCodes7 &amp;lt;pablocodes7@users.noreply.github.com&amp;gt;&lt;/p&gt;</content>
    <author>
      <name>PabloCodes7</name>
    </author>
    <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/284438953?s=60&amp;v=4"/>
  </entry>
  <entry>
    <id>tag:github.com,2008:Repository/1257620736/v0.6.0</id>
    <updated>2026-07-14T12:34:42Z</updated>
    <link rel="alternate" type="text/html" href="https://github.com/patchrail/patchrail/releases/tag/v0.6.0"/>
    <title>v0.6.0 — an unknown log that explains itself, and no more invented diagnoses</title>
    <content type="html">&lt;p&gt;release: 0.6.0 — stop shipping a classifier that misreads a real log (&lt;a class=&quot;issue-link js-issue-link&quot; href=&quot;https://github.com/patchrail/patchrail/pull/328&quot;&gt;#…&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a class=&quot;issue-link js-issue-link&quot; href=&quot;https://github.com/patchrail/patchrail/pull/328&quot;&gt;…328&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Three commits have been on main since 0.5.0 went out this morning and none of them
&lt;br /&gt;reaches anyone: PyPI still serves 0.5.0, which tells a Go repository its Node lockfile
&lt;br /&gt;is out of date. That came out of piping real failing runs from public repositories
&lt;br /&gt;through the one-liner in the README, the way a first-time user meets this tool. Of
&lt;br /&gt;eight new ecosystems, three were confidently wrong: oven-sh/bun diagnosed from a
&lt;br /&gt;prettier file list and a `lockfile/` directory in a path; istio/istio told it had a
&lt;br /&gt;Java build failure and a Node install failure, both read out of a single-line
&lt;br /&gt;Dependabot JSON blob; withastro/astro matched on `--no-frozen-lockfile`, the flag that
&lt;br /&gt;permits the change it was complaining about.&lt;/p&gt;

&lt;p&gt;Minor, not patch: an `unknown` verdict now carries a `runner_errors` field, which is
&lt;br /&gt;new surface. The classifier changes are behaviour changes by design — a wrong
&lt;br /&gt;diagnosis becomes `unknown`, which is the honest answer for a log we do not recognize —
&lt;br /&gt;and no fixture changes class or confidence (221 fixtures, top-1 1.0). Real logs that
&lt;br /&gt;already classified are untouched.&lt;/p&gt;

&lt;p&gt;The Action&#39;s default range stays `&amp;gt;=0.5.0,&amp;lt;0.6.0` and is bumped separately, once this
&lt;br /&gt;is live on PyPI and its suite has been run against a 0.6.0 wheel — the same order 0.5.0
&lt;br /&gt;followed, and the reason the cap exists.&lt;/p&gt;

&lt;p&gt;Co-authored-by: PabloCodes7 &amp;lt;hello@getpatchrail.com&amp;gt;&lt;/p&gt;</content>
    <author>
      <name>PabloCodes7</name>
    </author>
    <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/284438953?s=60&amp;v=4"/>
  </entry>
  <entry>
    <id>tag:github.com,2008:Repository/1257620736/v0.5.0</id>
    <updated>2026-07-14T10:32:28Z</updated>
    <link rel="alternate" type="text/html" href="https://github.com/patchrail/patchrail/releases/tag/v0.5.0"/>
    <title>v0.5.0 — real logs, real causes</title>
    <content type="html">&lt;p&gt;release: 0.5.0 — get five merged accuracy fixes to the people install…&lt;/p&gt;

&lt;p&gt;…ing today (&lt;a class=&quot;issue-link js-issue-link&quot; href=&quot;https://github.com/patchrail/patchrail/pull/322&quot;&gt;#322&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Five fixes have been sitting on main since 0.4.0 this morning and none of them
&lt;br /&gt;reaches a user: PyPI still serves 0.4.0, which reads a tool the job merely named
&lt;br /&gt;as the cause of death. That is not a hypothetical — running `ci explain` over real
&lt;br /&gt;failing runs from public repositories put it at three of nine (httpx, prefect,
&lt;br /&gt;home-assistant) and then, on a second sweep across non-Python ecosystems, three of
&lt;br /&gt;seventeen (kafka, moby, opencv), where a `GRADLE_HOME=` line in a Windows
&lt;br /&gt;environment table was enough to diagnose a Java build failure in a job that never
&lt;br /&gt;compiled anything. A first-time user&#39;s first log is a real log, not a fixture.&lt;/p&gt;

&lt;p&gt;Minor, not patch: `patchrail schema ci-classes` is new surface. The classifier
&lt;br /&gt;fixes are behaviour changes by design — a diagnosis that was wrong becomes right —
&lt;br /&gt;but no fixture changes classification or confidence (221 fixtures, top-1 1.0).&lt;/p&gt;

&lt;p&gt;The GitHub Action&#39;s default range stays `&amp;lt;0.5.0` on purpose and is bumped
&lt;br /&gt;separately, once this is live on PyPI: 0.4.0 moved the `ci classes` JSON from v1 to
&lt;br /&gt;v2 in a minor bump and the break reached the Action silently, so the cap now earns
&lt;br /&gt;its keep. Verified before tagging: the Action&#39;s suite passes against a 0.5.0 wheel
&lt;br /&gt;and the payload it consumes is still `patchrail.ci_classes.v2`.&lt;/p&gt;</content>
    <author>
      <name>PabloCodes7</name>
    </author>
    <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/284438953?s=60&amp;v=4"/>
  </entry>
</feed>
