<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>qa on tomrochette.com</title>
    <link>https://tomrochette.com/tags/qa/</link>
    <description>Recent content in qa on tomrochette.com</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <managingEditor>tom@tomrochette.com (Tom Rochette)</managingEditor>
    <webMaster>tom@tomrochette.com (Tom Rochette)</webMaster>
    <copyright>© 2026 Tom Rochette</copyright>
    <lastBuildDate>Tue, 27 Oct 2026 05:08:59 -0400</lastBuildDate><atom:link href="https://tomrochette.com/tags/qa/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>agent-qa</title>
      <link>https://tomrochette.com/agents/evaluation-review/agent-qa/</link>
      <pubDate>Tue, 27 Oct 2026 00:00:00 +0000</pubDate>
      <author>tom@tomrochette.com (Tom Rochette)</author>
      <guid>https://tomrochette.com/agents/evaluation-review/agent-qa/</guid>
      <category>research-note</category><category>agent-curated</category><category>fully-ai-generated</category><category>llm=glm-5.3-flash</category><category>evaluation-review</category><category>qa</category><category>testing</category><category>e2e</category><category>mobile</category>
      <description>&lt;p&gt;agent-qa is vostride&amp;rsquo;s fair-source, self-improving QA agent that runs plain-English user journeys against actual web, Android, and iOS apps through Playwright and Appium, judging each step on screen and keeping the evidence of every verdict.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Its bet is that QA needs its own agent, because the coding agent that wrote the code cannot adversarially test it, and its discipline is evidence: screenshots, console and network logs, the accessibility tree, and video behind every step&amp;rsquo;s verdict.&lt;/strong&gt;&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;What it is&#xA;    &lt;div id=&#34;what-it-is&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#what-it-is&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;An npm-distributed CLI (Node 24+) plus a local dashboard that executes natural-language YAML tests: Playwright drives an actual browser on web, Appium an actual device or emulator on Android and iOS, and a separate verifier must agree each step is done before a verdict records.&#xA;Tests, configuration, hooks, and the memidex knowledge store are files in your repository, reviewable in pull requests, while the &lt;code&gt;.agent-qa/&lt;/code&gt; run evidence stays machine-local or uploads as CI artifacts.&#xA;Self-improvement turns validated run lessons into reviewable records, and marking a verdict wrong corrects the knowledge or the test in the same call.&#xA;Coding agents drive it through an MCP server (20 tools) and four skills; CI runs it with exit codes carrying the verdict and JUnit output.&#xA;Made by vostride, the project of founder Pranshu Chittora, licensed FSL-1.1-ALv2 with an Apache-2.0 future license on each version&amp;rsquo;s second anniversary.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Status&#xA;    &lt;div id=&#34;status&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#status&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Young and moving fast: 896 stars, 23 forks, and 6 open issues and PRs as of 2026-10-27, repository created 2026-05-07, with v0.2.3 released 2026-10-24 (three releases that day, the first after the npm train had sat on 0.1.21 since June) and the npm package publishing through GitHub Actions OIDC under SLSA provenance, 3,616 downloads over 2026-09-27 to 2026-10-27.&#xA;The 50-point launch thread (2026-05-19) is the main independent discussion, and the README sets its own bar: &amp;ldquo;Early stage. Expect bugs.&amp;rdquo;&#xA;The headline benchmark claims are self-published: 116/116 on AndroidWorld and 99.6% completion on AppControlBench, run on gpt-6-sol with memory and self-improvement off, every task&amp;rsquo;s run published with steps, screenshots, and video, and the site discloses that agent-qa is not an entry on the official AppControlBench leaderboard and that models, judges, and OS versions differ between compared columns.&lt;/p&gt;&#xA;&lt;picture&gt;&#xA;  &lt;source media=&#34;(prefers-color-scheme: dark)&#34; srcset=&#34;https://api.star-history.com/chart?repos=vostride/agent-qa&amp;type=date&amp;theme=dark&amp;legend=top-left&#34; /&gt;&#xA;  &lt;source media=&#34;(prefers-color-scheme: light)&#34; srcset=&#34;https://api.star-history.com/chart?repos=vostride/agent-qa&amp;type=date&amp;legend=top-left&#34; /&gt;&#xA;  &lt;img alt=&#34;Star History Chart&#34; src=&#34;https://api.star-history.com/chart?repos=vostride/agent-qa&amp;type=date&amp;legend=top-left&#34; /&gt;&#xA;&lt;/picture&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Strengths&#xA;    &lt;div id=&#34;strengths&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#strengths&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Judges the shipped surface, not the code: journeys run against the actual app, so the tests cannot inherit the implementation&amp;rsquo;s blind spots the way agent-written tests do.&lt;/li&gt;&#xA;&lt;li&gt;Evidence on every step makes a false pass auditable instead of mysterious.&lt;/li&gt;&#xA;&lt;li&gt;Everything learned is a repo file you review and revert, and your feedback overrides the agent&amp;rsquo;s verdicts.&lt;/li&gt;&#xA;&lt;li&gt;Real CI fit: exit codes carry the verdict, JUnit output, and the docs ship the GitHub Actions job.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Cautions&#xA;    &lt;div id=&#34;cautions&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#cautions&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The benchmarks are the vendor&amp;rsquo;s own runs: per-task evidence is unusually open, but no third party has reproduced the 100% AndroidWorld claim, and the compared columns differ in models, judges, and OS versions.&lt;/li&gt;&#xA;&lt;li&gt;FSL-1.1-ALv2 is fair-source, not open source: you cannot offer the product as a service until each version converts to Apache-2.0 two years after release.&lt;/li&gt;&#xA;&lt;li&gt;Memory and self-improvement add a second moving part to trust: a lesson validated by runs can still encode a wrong verdict until your feedback catches it.&lt;/li&gt;&#xA;&lt;li&gt;One maintainer, an early-stage README, and a 3,616-download month are thin adoption signals for the claims being made.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Pricing&#xA;    &lt;div id=&#34;pricing&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#pricing&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Does not apply: the site states there is no paid tier, hosted lock-in, seat fee, or required model vendor, and teams bring their own model credentials and devices.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Compared to&#xA;    &lt;div id=&#34;compared-to&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#compared-to&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/evaluation-review/deepeval/&#34; &gt;deepeval&lt;/a&gt;: judges LLM outputs you supply with roughly fifty metrics and gates merges in pytest; agent-qa judges the app surface through a browser or device. Choose deepeval for model behavior, agent-qa for user journeys.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/evaluation-review/hermes-gate/&#34; &gt;HermesGate&lt;/a&gt;: both judge completion claims, but HermesGate runs your repository&amp;rsquo;s own checks against a receipt while agent-qa drives the actual UI to verdicts no pre-existing check covers.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/evaluation-review/frontierharness-eval/&#34; &gt;FrontierHarness Eval&lt;/a&gt;: the vendor-runs-its-own-benchmark caveat applies to both; FrontierHarness prices harnesses on fixed tasks, agent-qa&amp;rsquo;s benchmarks price the QA agent itself.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Bottom line&#xA;    &lt;div id=&#34;bottom-line&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#bottom-line&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Recommended for teams whose coding agents outpace their acceptance tests and who want the actual app judged, on web or mobile, with per-step evidence living in the repo.&lt;/strong&gt;&#xA;Not for anyone needing an OSI-approved license today, a proven adoption base, or benchmark numbers someone else has reproduced.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Changes&#xA;    &lt;div id=&#34;changes&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#changes&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;2026-10-27 - Created, resolving the carried spec-driven-development handoff: the dormancy hold from 2026-10-12 triggered on the 2026-10-24 push and three releases, and the citation bar cleared with docs, benchmark evidence, npm, and the launch thread.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;See also&#xA;    &lt;div id=&#34;see-also&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#see-also&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/evaluation-review/deepeval/&#34; &gt;deepeval&lt;/a&gt; - the CI-gating judge for model outputs, the counterpart to judging the app surface&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/evaluation-review/hermes-gate/&#34; &gt;HermesGate&lt;/a&gt; - the receipt-bound completion gate for check-based claims&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/evaluation-review/frontierharness-eval/&#34; &gt;FrontierHarness Eval&lt;/a&gt; - the vendor-run benchmark precedent this note&amp;rsquo;s caveat mirrors&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/evaluation-review/evaluation-review-feature-matrix/&#34; &gt;Evaluation and Review Feature Matrix&lt;/a&gt; - the category comparison this note joins&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;References&#xA;    &lt;div id=&#34;references&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#references&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/vostride/agent-qa&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=github.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://github.com/vostride/agent-qa&lt;/a&gt; - repository, README claims, install, license badge, counts as of 2026-10-27&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://vostride.com/agent-qa&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=vostride.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://vostride.com/agent-qa&lt;/a&gt; - the no-paid-tier statement, benchmark summaries, and the non-leaderboard disclosure&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://vostride.com/docs/agent-qa&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=vostride.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://vostride.com/docs/agent-qa&lt;/a&gt; - the docs hub: plain-English tests, memidex, self-improvement, MCP server, skills&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://vostride.com/docs/agent-qa/guides/ci&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=vostride.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://vostride.com/docs/agent-qa/guides/ci&lt;/a&gt; - CI exit codes, JUnit output, artifact and learning rules&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://vostride.com/benchmark/android-world&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=vostride.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://vostride.com/benchmark/android-world&lt;/a&gt; - the self-published 116/116 runs with per-task evidence&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://vostride.com/benchmark/app-control-bench&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=vostride.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://vostride.com/benchmark/app-control-bench&lt;/a&gt; - the AppControlBench runs, judge model, and comparison caveats&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://raw.githubusercontent.com/vostride/agent-qa/HEAD/LICENSE.md&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=raw.githubusercontent.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://raw.githubusercontent.com/vostride/agent-qa/HEAD/LICENSE.md&lt;/a&gt; - FSL-1.1-ALv2 and the Apache-2.0 future-license grant&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://registry.npmjs.org/agent-qa/latest&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=registry.npmjs.org&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://registry.npmjs.org/agent-qa/latest&lt;/a&gt; - npm 0.2.3, Node 24 engine, SLSA provenance attestations&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://api.npmjs.org/downloads/point/2026-09-27:2026-10-27/agent-qa&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=api.npmjs.org&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://api.npmjs.org/downloads/point/2026-09-27:2026-10-27/agent-qa&lt;/a&gt; - the trailing-month download figure&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://news.ycombinator.com/item?id=48191312&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=news.ycombinator.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://news.ycombinator.com/item?id=48191312&lt;/a&gt; - the 50-point launch thread with the why-not-codex-and-playwright challenge&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
      
    </item>
    
  </channel>
</rss>
