<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>deterministic on tomrochette.com</title>
    <link>https://tomrochette.com/tags/deterministic/</link>
    <description>Recent content in deterministic 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>Fri, 16 Oct 2026 01:50:13 -0400</lastBuildDate><atom:link href="https://tomrochette.com/tags/deterministic/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>HermesGate</title>
      <link>https://tomrochette.com/agents/evaluation-review/hermes-gate/</link>
      <pubDate>Fri, 16 Oct 2026 00:00:00 +0000</pubDate>
      <author>tom@tomrochette.com (Tom Rochette)</author>
      <guid>https://tomrochette.com/agents/evaluation-review/hermes-gate/</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>ci</category><category>quality-gate</category><category>deterministic</category>
      <description>&lt;p&gt;HermesGate is Hermes Labs&amp;rsquo; Apache-2.0 receipt-bound quality gate for coding agents: it runs a repository&amp;rsquo;s own declared checks, binds the PASS to an exact content digest and the tool versions that produced it, and reuses that receipt only while the bytes still match.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Its judged object is the completion claim, not the code: where every other judge in this category scores outputs, HermesGate scores whether &amp;ldquo;the checks passed&amp;rdquo; means anything, turning an agent&amp;rsquo;s unverifiable done into a receipt a human, a hook, or a boundary command can verify.&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;A Python 3.11+ CLI (&lt;code&gt;pip install hermes-gate&lt;/code&gt;) with no daemon and no runtime dependencies beyond Git, from Hermes Labs, an agentic-infrastructure vendor whose tagline is &amp;ldquo;assurance, not theater&amp;rdquo;.&#xA;&lt;code&gt;hermes-gate init&lt;/code&gt; detects repository-native commands (Ruff, pytest, npm, lint, typecheck, build) and writes a reviewable &lt;code&gt;.hermes/gate.toml&lt;/code&gt; profile, a checksum-bound standard-library runner, and a CI workflow, wrapping the repo&amp;rsquo;s own tools rather than installing or replacing them.&#xA;Three completion workflows cover &lt;code&gt;fast&lt;/code&gt; (changed paths, seconds), &lt;code&gt;full&lt;/code&gt; (the whole local test contract), and &lt;code&gt;review&lt;/code&gt; (one bounded semantic review after fast passes), each emitting one terminal JSON state from PASS, FAIL, NOT_APPLICABLE, NOT_CONFIGURED, REVIEW_UNAVAILABLE, PARKED, or ERROR, and &lt;code&gt;boundary commit|push|pr-create|pr-ready&lt;/code&gt; verifies receipts before a Git operation without performing one.&#xA;The &lt;code&gt;review&lt;/code&gt; mode is the only model-touching path: it consumes CodeRabbit agent-mode JSONL or any local reviewer command emitting a completion claim against the exact diff digest, and unparseable, timed-out, or unavailable review output is never relabeled PASS.&#xA;Distribution is PyPI, a pinned GitHub Action (&lt;code&gt;hermes-labs-ai/hermes-gate@v0.1.7&lt;/code&gt;), and a self-contained Claude Code plugin wiring SessionStart, Stop, and PreToolUse (Bash) hooks, all of which fail open; a hidden &lt;code&gt;delegate-judge&lt;/code&gt; command adapts the same engine as the quality gate for NousResearch&amp;rsquo;s Hermes Agent.&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;Early and near-invisible: 3 stars, 1 fork, and 89 commits as of 2026-10-16, created 2026-08-10, pushed 2026-10-15, PyPI 0.1.7 matching the v0.1.7 action.&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=hermes-labs-ai/hermes-gate&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=hermes-labs-ai/hermes-gate&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=hermes-labs-ai/hermes-gate&amp;type=date&amp;legend=top-left&#34; /&gt;&#xA;&lt;/picture&gt;&#xA;&lt;p&gt;The provenance is untidy: the awesome-list-linked account (roli-lpci) and the vendor org (hermes-labs-ai) carry twin repositories with identical push timestamps, a mirror arrangement the README never explains.&#xA;A Hacker News search returns no threads, and the vendor&amp;rsquo;s own curated nine-project catalog does not list HermesGate yet, though the org hosts it.&#xA;&lt;strong&gt;The zero-community footprint is the adoption signal here: the pattern is worth copying, and nothing independent has validated the implementation.&lt;/strong&gt;&lt;/p&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;The receipt is the mechanism this category lacked: a PASS names the exact content digest, selected paths, checks, and command versions, so &amp;ldquo;it passed&amp;rdquo; is checkable later and a stale receipt cannot masquerade as a fresh one.&lt;/li&gt;&#xA;&lt;li&gt;Deterministic by default: fast and full never call a model, which makes the gate&amp;rsquo;s verdict reproducible in a way no LLM judge here is.&lt;/li&gt;&#xA;&lt;li&gt;The fail mode is split correctly: adopted-repo boundaries fail closed on a missing profile, while advisory hooks fail open so a malformed payload never blocks a session.&lt;/li&gt;&#xA;&lt;li&gt;The self-description is disciplined about epistemics: a PASS explicitly does not prove correctness, security, mergeability, or that a reviewer examined every line.&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;Near-zero adoption: 3 stars, no discussion anywhere, and absent from the vendor&amp;rsquo;s own catalog page, so the receipt semantics have no third-party validation.&lt;/li&gt;&#xA;&lt;li&gt;The review mode&amp;rsquo;s default providers (CodeRabbit, a bundled Claude adapter) send your diff to third parties when enabled, and the README&amp;rsquo;s PASS boundary is easy to skim past.&lt;/li&gt;&#xA;&lt;li&gt;The twin-repository arrangement (personal-account mirror beside the org repo) is weak provenance for a tool whose product is provable identity.&lt;/li&gt;&#xA;&lt;li&gt;Solo-vendor tool from a small consultancy, pre-1.0, with the profile format and JSON states still free to move.&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;Free and open source under Apache-2.0, fully local, with the judge stage billing whatever reviewer or model you attach.&#xA;No hosted tier is recorded; the vendor sells reliability services separately.&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/verbatim-citation-gate/&#34; &gt;Verbatim Citation Gate&lt;/a&gt;: the same deterministic-first pattern on a different object, citations versus completion claims, and both refuse to spend model tokens before the cheap check has spoken.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/evaluation-review/deepeval/&#34; &gt;deepeval&lt;/a&gt;: the eval suite as CI gate; deepeval judges model outputs against metrics, HermesGate attests that the repository&amp;rsquo;s own checks ran on exact bytes.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/evaluation-review/better-harness/&#34; &gt;Better Harness&lt;/a&gt;: scores the work loop continuously from evidence; HermesGate binds one completion event to one verifiable receipt.&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 as a pattern for anyone building agent completion gates: the receipt-bound, digest-checked PASS is the right primitive, and the implementation is small enough to read in an afternoon.&lt;/strong&gt;&#xA;Not as a trusted dependency today: with three stars and no independent validation, copy the design before you install the package.&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-16 - Created from the awesome-agent-observability scan, admitted as the category&amp;rsquo;s first receipt-bound completion gate.&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/verbatim-citation-gate/&#34; &gt;Verbatim Citation Gate&lt;/a&gt; - the deterministic-first sibling on citations&lt;/li&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 eval framework&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/evaluation-review/better-harness/&#34; &gt;Better Harness&lt;/a&gt; - the workflow-level findings loop&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/roli-lpci/hermes-gate&#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/roli-lpci/hermes-gate&lt;/a&gt; - the list-linked repository: README, CLI, workflows, review contract, and plugin&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/hermes-labs-ai/hermes-gate&#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/hermes-labs-ai/hermes-gate&lt;/a&gt; - the vendor-org repository the badges and GitHub Action point at&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pypi.org/project/hermes-gate/&#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=pypi.org&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://pypi.org/project/hermes-gate/&lt;/a&gt; - the published package, 0.1.7, authored by Hermes Labs&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://raw.githubusercontent.com/roli-lpci/hermes-gate/main/CHANGELOG.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/roli-lpci/hermes-gate/main/CHANGELOG.md&lt;/a&gt; - release history, including the reused-review fix&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://raw.githubusercontent.com/roli-lpci/hermes-gate/main/llms.txt&#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/roli-lpci/hermes-gate/main/llms.txt&lt;/a&gt; - the project&amp;rsquo;s self-description and docs index&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://hermes-labs.ai/open-source&#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=hermes-labs.ai&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://hermes-labs.ai/open-source&lt;/a&gt; - the vendor&amp;rsquo;s curated catalog, which does not yet list HermesGate&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
      
    </item>
    
  </channel>
</rss>
