<?xml version="1.0" encoding="UTF-8"?>
<testsuites name="bun test" tests="23" assertions="253" failures="0" skipped="0" time="1.238049958">
  <testsuite name="modules/workstation/claude/hooks/test/model-test-fixture-gate.test.mjs" file="modules/workstation/claude/hooks/test/model-test-fixture-gate.test.mjs" tests="4" assertions="58" failures="0" skipped="0" time="0" hostname="debian1">
    <properties>
      <property name="ci" value="https://github.com/alexcodeplace/overdeck/actions/runs/31488133161" />
      <property name="commit" value="9f23d4b61ea9af2e6ac32232ee9f4ad13067a907" />
    </properties>
    <testsuite name="model verification fixture deny gate" file="modules/workstation/claude/hooks/test/model-test-fixture-gate.test.mjs" line="39" tests="4" assertions="58" failures="0" skipped="0" time="0.352" hostname="debian1">
      <testcase name="blocks machine-signalled raw wrapper and CLI verification" classname="model verification fixture deny gate" time="0.087915" file="modules/workstation/claude/hooks/test/model-test-fixture-gate.test.mjs" line="40" assertions="16" />
      <testcase name="preserves heuristic detection for trivial probes" classname="model verification fixture deny gate" time="0.088411" file="modules/workstation/claude/hooks/test/model-test-fixture-gate.test.mjs" line="47" assertions="16" />
      <testcase name="fixture name in prompt or comment cannot bypass a raw denial" classname="model verification fixture deny gate" time="0.044631" file="modules/workstation/claude/hooks/test/model-test-fixture-gate.test.mjs" line="54" assertions="8" />
      <testcase name="allows actual fixture invocations and benign implementation or review dispatches" classname="model verification fixture deny gate" time="0.133075" file="modules/workstation/claude/hooks/test/model-test-fixture-gate.test.mjs" line="59" assertions="18" />
    </testsuite>
  </testsuite>
  <testsuite name="modules/workstation/claude/hooks/test/say-the-word-gate.test.mjs" file="modules/workstation/claude/hooks/test/say-the-word-gate.test.mjs" tests="19" assertions="195" failures="0" skipped="0" time="0" hostname="debian1">
    <properties>
      <property name="ci" value="https://github.com/alexcodeplace/overdeck/actions/runs/31488133161" />
      <property name="commit" value="9f23d4b61ea9af2e6ac32232ee9f4ad13067a907" />
    </properties>
    <testsuite name="say-the-word-gate — naming the next action" file="modules/workstation/claude/hooks/test/say-the-word-gate.test.mjs" line="49" tests="8" assertions="61" failures="0" skipped="0" time="0.247" hostname="debian1">
      <testcase name="a labelled immediate-next line blocks" classname="say-the-word-gate — naming the next action" time="0.019537" file="modules/workstation/claude/hooks/test/say-the-word-gate.test.mjs" line="50" assertions="5" />
      <testcase name="a next-steps heading blocks" classname="say-the-word-gate — naming the next action" time="0.039815" file="modules/workstation/claude/hooks/test/say-the-word-gate.test.mjs" line="54" assertions="10" />
      <testcase name="a heading that merely starts with the word next does not block" classname="say-the-word-gate — naming the next action" time="0.018883" file="modules/workstation/claude/hooks/test/say-the-word-gate.test.mjs" line="59" assertions="4" />
      <testcase name="a bolded next-step label blocks" classname="say-the-word-gate — naming the next action" time="0.01912" file="modules/workstation/claude/hooks/test/say-the-word-gate.test.mjs" line="63" assertions="5" />
      <testcase name="prose forms block" classname="say-the-word-gate — naming the next action" time="0.095557" file="modules/workstation/claude/hooks/test/say-the-word-gate.test.mjs" line="67" assertions="25" />
      <testcase name="the phrase inside a fenced block does not block" classname="say-the-word-gate — naming the next action" time="0.018985" file="modules/workstation/claude/hooks/test/say-the-word-gate.test.mjs" line="79" assertions="4" />
      <testcase name="the phrase inside a double-quoted span does not block" classname="say-the-word-gate — naming the next action" time="0.020138" file="modules/workstation/claude/hooks/test/say-the-word-gate.test.mjs" line="83" assertions="4" />
      <testcase name="a plain completion report does not block" classname="say-the-word-gate — naming the next action" time="0.019112" file="modules/workstation/claude/hooks/test/say-the-word-gate.test.mjs" line="87" assertions="4" />
    </testsuite>
    <testsuite name="say-the-word-gate — parking approved work" file="modules/workstation/claude/hooks/test/say-the-word-gate.test.mjs" line="92" tests="5" assertions="112" failures="0" skipped="0" time="0.444" hostname="debian1">
      <testcase name="newly covered asks block" classname="say-the-word-gate — parking approved work" time="0.13476" file="modules/workstation/claude/hooks/test/say-the-word-gate.test.mjs" line="93" assertions="35" />
      <testcase name="the say-go family blocks" classname="say-the-word-gate — parking approved work" time="0.174408" file="modules/workstation/claude/hooks/test/say-the-word-gate.test.mjs" line="107" assertions="45" />
      <testcase name="a quoted or backticked mention of say-go does not block" classname="say-the-word-gate — parking approved work" time="0.041049" file="modules/workstation/claude/hooks/test/say-the-word-gate.test.mjs" line="123" assertions="8" />
      <testcase name="ordinary prose containing go is untouched" classname="say-the-word-gate — parking approved work" time="0.020177" file="modules/workstation/claude/hooks/test/say-the-word-gate.test.mjs" line="128" assertions="4" />
      <testcase name="existing asks still block" classname="say-the-word-gate — parking approved work" time="0.075956" file="modules/workstation/claude/hooks/test/say-the-word-gate.test.mjs" line="132" assertions="20" />
    </testsuite>
    <testsuite name="say-the-word-gate — deferral claims" file="modules/workstation/claude/hooks/test/say-the-word-gate.test.mjs" line="144" tests="2" assertions="9" failures="0" skipped="0" time="0.038" hostname="debian1">
      <testcase name="a claim without a user quote blocks" classname="say-the-word-gate — deferral claims" time="0.019123" file="modules/workstation/claude/hooks/test/say-the-word-gate.test.mjs" line="145" assertions="5" />
      <testcase name="a claim carrying a verbatim user quote does not block" classname="say-the-word-gate — deferral claims" time="0.019353" file="modules/workstation/claude/hooks/test/say-the-word-gate.test.mjs" line="149" assertions="4" />
    </testsuite>
    <testsuite name="say-the-word-gate — fail-open" file="modules/workstation/claude/hooks/test/say-the-word-gate.test.mjs" line="156" tests="4" assertions="13" failures="0" skipped="0" time="0.072" hostname="debian1">
      <testcase name="stop_hook_active returns silently" classname="say-the-word-gate — fail-open" time="0.018353" file="modules/workstation/claude/hooks/test/say-the-word-gate.test.mjs" line="157" assertions="4" />
      <testcase name="an absent transcript returns silently" classname="say-the-word-gate — fail-open" time="0.01889" file="modules/workstation/claude/hooks/test/say-the-word-gate.test.mjs" line="161" assertions="3" />
      <testcase name="a malformed payload returns silently" classname="say-the-word-gate — fail-open" time="0.018282" file="modules/workstation/claude/hooks/test/say-the-word-gate.test.mjs" line="165" assertions="3" />
      <testcase name="a malformed transcript returns silently" classname="say-the-word-gate — fail-open" time="0.018194" file="modules/workstation/claude/hooks/test/say-the-word-gate.test.mjs" line="172" assertions="3" />
    </testsuite>
  </testsuite>
</testsuites>
