<?xml version="1.0" encoding="UTF-8"?>
<testsuites name="bun test" tests="226" assertions="738" failures="0" skipped="0" time="4.204520255">
  <testsuite name="src/workspace.test.ts" file="src/workspace.test.ts" tests="11" assertions="65" 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="WorkspaceManager" file="src/workspace.test.ts" line="28" tests="11" assertions="65" failures="0" skipped="0" time="0.077" hostname="debian1">
      <testcase name="isolates concurrent dirty worktrees of one repo" classname="WorkspaceManager" time="0.011606" file="src/workspace.test.ts" line="109" assertions="10" />
      <testcase name="refuses stale publication, preserves staging and emits act event" classname="WorkspaceManager" time="0.010246" file="src/workspace.test.ts" line="133" assertions="8" />
      <testcase name="requires both snapshot digest and checkout generation to remain unchanged" classname="WorkspaceManager" time="0.005383" file="src/workspace.test.ts" line="158" assertions="2" />
      <testcase name="default generation check ignores controller staging paths" classname="WorkspaceManager" time="0.005092" file="src/workspace.test.ts" line="172" assertions="1" />
      <testcase name="recovers a crash during promotion to a fully staged state" classname="WorkspaceManager" time="0.006288" file="src/workspace.test.ts" line="191" assertions="6" />
      <testcase name="recovers a crash after the atomic swap to a fully promoted state" classname="WorkspaceManager" time="0.006675" file="src/workspace.test.ts" line="210" assertions="5" />
      <testcase name="reattaches once after transport interruption" classname="WorkspaceManager" time="0.00536" file="src/workspace.test.ts" line="227" assertions="3" />
      <testcase name="fails loud after the single reattach also disconnects" classname="WorkspaceManager" time="0.005412" file="src/workspace.test.ts" line="244" assertions="5" />
      <testcase name="garbage-collects completed workspaces after TTL using injected clock" classname="WorkspaceManager" time="0.005975" file="src/workspace.test.ts" line="268" assertions="5" />
      <testcase name="atomically reserves the global remote-job limit" classname="WorkspaceManager" time="0.007917" file="src/workspace.test.ts" line="284" assertions="15" />
      <testcase name="wires authenticated create, stage and promote routes" classname="WorkspaceManager" time="0.012995" file="src/workspace.test.ts" line="305" assertions="5" />
    </testsuite>
  </testsuite>
  <testsuite name="src/notify.test.ts" file="src/notify.test.ts" tests="9" assertions="29" 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="canonical notification mappings" file="src/notify.test.ts" line="21" tests="3" assertions="3" failures="0" skipped="0" time="0" hostname="debian1">
      <testcase name="maps incident notifications field-for-field" classname="canonical notification mappings" time="0.000081" file="src/notify.test.ts" line="22" assertions="1" />
      <testcase name="maps watchdog notifications field-for-field with injected clock" classname="canonical notification mappings" time="0.0001" file="src/notify.test.ts" line="53" assertions="1" />
      <testcase name="omits restartError when watchdog notification has none" classname="canonical notification mappings" time="0.000036" file="src/notify.test.ts" line="71" assertions="1" />
    </testsuite>
    <testsuite name="laptop notifier sink" file="src/notify.test.ts" line="83" tests="3" assertions="6" failures="0" skipped="0" time="0" hostname="debian1">
      <testcase name="info never desktop-pages" classname="laptop notifier sink" time="0.000201" file="src/notify.test.ts" line="107" assertions="2" />
      <testcase name="page and high desktop locally in both mode" classname="laptop notifier sink" time="0.00008" file="src/notify.test.ts" line="118" assertions="2" />
      <testcase name="broken notify-send is swallowed and journaled" classname="laptop notifier sink" time="0.0001" file="src/notify.test.ts" line="156" assertions="2" />
    </testsuite>
    <testsuite name="watchdog webhook adapter" file="src/notify.test.ts" line="182" tests="2" assertions="13" failures="0" skipped="0" time="0" hostname="debian1">
      <testcase name="POST uses exact ntfy-compatible request and 5s timeout" classname="watchdog webhook adapter" time="0.000485" file="src/notify.test.ts" line="183" assertions="10" />
      <testcase name="POST failure logs and is swallowed" classname="watchdog webhook adapter" time="0.000292" file="src/notify.test.ts" line="218" assertions="3" />
    </testsuite>
    <testsuite name="report-fed paging" file="src/notify.test.ts" line="242" tests="1" assertions="7" failures="0" skipped="0" time="0.008" hostname="debian1">
      <testcase name="126 then 127 job reports page through the real laptop sink" classname="report-fed paging" time="0.008365" file="src/notify.test.ts" line="250" assertions="7" />
    </testsuite>
  </testsuite>
  <testsuite name="src/admission-loop.test.ts" file="src/admission-loop.test.ts" tests="5" assertions="11" 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="startAdmissionReconcileLoop" file="src/admission-loop.test.ts" line="10" tests="5" assertions="11" failures="0" skipped="0" time="0.024" hostname="debian1">
      <testcase name="promotes an enrolling host with no operator action" classname="startAdmissionReconcileLoop" time="0.007037" file="src/admission-loop.test.ts" line="40" assertions="2" />
      <testcase name="records and logs the probe&apos;s reason when the host stays out" classname="startAdmissionReconcileLoop" time="0.004909" file="src/admission-loop.test.ts" line="61" assertions="2" />
      <testcase name="continues host admission when delivery lifecycle reconciliation throws" classname="startAdmissionReconcileLoop" time="0.004965" file="src/admission-loop.test.ts" line="85" assertions="2" />
      <testcase name="skips the pass entirely when nothing is enrolling" classname="startAdmissionReconcileLoop" time="0.00465" file="src/admission-loop.test.ts" line="101" assertions="2" />
      <testcase name="does not start a second pass while one is in flight" classname="startAdmissionReconcileLoop" time="0.005438" file="src/admission-loop.test.ts" line="124" assertions="3" />
    </testsuite>
  </testsuite>
  <testsuite name="src/server.test.ts" file="src/server.test.ts" tests="16" assertions="66" 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="HTTP API" file="src/server.test.ts" line="34" tests="10" assertions="24" failures="0" skipped="0" time="0" hostname="debian1">
      <testsuite name="health" file="src/server.test.ts" line="48" tests="2" assertions="3" failures="0" skipped="0" time="0" hostname="debian1">
        <testcase name="GET /health returns 401 without auth" classname="health &amp;gt; HTTP API" time="0.000702" file="src/server.test.ts" line="49" assertions="1" />
        <testcase name="GET /health returns ok with valid bearer" classname="health &amp;gt; HTTP API" time="0.000409" file="src/server.test.ts" line="54" assertions="2" />
      </testsuite>
      <testsuite name="delivery evidence admission" file="src/server.test.ts" line="62" tests="1" assertions="5" failures="0" skipped="0" time="0" hostname="debian1">
        <testcase name="valid generic bearer cannot admit caller-supplied evidence" classname="delivery evidence admission &amp;gt; HTTP API" time="0.000608" file="src/server.test.ts" line="63" assertions="5" />
      </testsuite>
      <testsuite name="config health" file="src/server.test.ts" line="84" tests="1" assertions="1" failures="0" skipped="0" time="0.006" hostname="debian1">
        <testcase name="corrupt config with override records exactly one incident" classname="config health &amp;gt; HTTP API" time="0.006368" file="src/server.test.ts" line="85" assertions="1" />
      </testsuite>
      <testsuite name="status auth" file="src/server.test.ts" line="110" tests="3" assertions="6" failures="0" skipped="0" time="0.003" hostname="debian1">
        <testcase name="GET /status without Authorization returns 401" classname="status auth &amp;gt; HTTP API" time="0.001399" file="src/server.test.ts" line="111" assertions="1" />
        <testcase name="GET /status with wrong bearer token returns 401" classname="status auth &amp;gt; HTTP API" time="0.000366" file="src/server.test.ts" line="116" assertions="1" />
        <testcase name="GET /status with valid bearer returns schema-valid ControllerStatus" classname="status auth &amp;gt; HTTP API" time="0.002655" file="src/server.test.ts" line="123" assertions="4" />
      </testsuite>
      <testsuite name="transition API" file="src/server.test.ts" line="137" tests="3" assertions="9" failures="0" skipped="0" time="0.003" hostname="debian1">
        <testcase name="POST /transition/box-drain commits and bumps revision" classname="transition API &amp;gt; HTTP API" time="0.002769" file="src/server.test.ts" line="138" assertions="4" />
        <testcase name="stale revision returns 409" classname="transition API &amp;gt; HTTP API" time="0.00077" file="src/server.test.ts" line="160" assertions="3" />
        <testcase name="invalid args return 422" classname="transition API &amp;gt; HTTP API" time="0.001436" file="src/server.test.ts" line="176" assertions="2" />
      </testsuite>
    </testsuite>
    <testsuite name="report ingest" file="src/server.test.ts" line="203" tests="6" assertions="42" failures="0" skipped="0" time="0.033" hostname="debian1">
      <testcase name="derives identity, enrolls observed host, replays, and advances attempts" classname="report ingest" time="0.006587" file="src/server.test.ts" line="204" assertions="11" />
      <testcase name="conflicts preserve job and append one event" classname="report ingest" time="0.00557" file="src/server.test.ts" line="244" assertions="3" />
      <testcase name="raw 126/127 reports never blame argv[0] without executor evidence" classname="report ingest" time="0.00756" file="src/server.test.ts" line="265" assertions="7" />
      <testcase name="rejects untrusted identity, unsafe mirrors, empty commands, and relative config paths" classname="report ingest" time="0.005347" file="src/server.test.ts" line="302" assertions="9" />
      <testcase name="event failure rolls back whole job report" classname="report ingest" time="0.004795" file="src/server.test.ts" line="331" assertions="5" />
      <testcase name="config reports enforce replay and incident sentinel ownership" classname="report ingest" time="0.006062" file="src/server.test.ts" line="350" assertions="7" />
    </testsuite>
  </testsuite>
  <testsuite name="src/watchdog-main.test.ts" file="src/watchdog-main.test.ts" tests="14" assertions="28" 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="watchdog config" file="src/watchdog-main.test.ts" line="23" tests="7" assertions="11" failures="0" skipped="0" time="0" hostname="debian1">
      <testcase name="accepts absent restart argv fields as observe-only" classname="watchdog config" time="0.000208" file="src/watchdog-main.test.ts" line="24" assertions="3" />
      <testcase name="accepts empty restart argv arrays as observe-only" classname="watchdog config" time="0.000098" file="src/watchdog-main.test.ts" line="31" assertions="2" />
      <testcase name="rejects intervalMs at or below probe timeout" classname="watchdog config" time="0.000131" file="src/watchdog-main.test.ts" line="41" assertions="2" />
      <testcase name="rejects non-loopback target URLs" classname="watchdog config" time="0.000074" file="src/watchdog-main.test.ts" line="48" assertions="1" />
      <testcase name="rejects non-HTTPS webhook URLs" classname="watchdog config" time="0.000083" file="src/watchdog-main.test.ts" line="55" assertions="1" />
      <testcase name="rejects unknown config keys" classname="watchdog config" time="0.000109" file="src/watchdog-main.test.ts" line="62" assertions="1" />
      <testcase name="rejects restart argv with empty strings" classname="watchdog config" time="0.00009" file="src/watchdog-main.test.ts" line="67" assertions="1" />
    </testsuite>
    <testsuite name="watchdog token file" file="src/watchdog-main.test.ts" line="75" tests="2" assertions="2" failures="0" skipped="0" time="0.002" hostname="debian1">
      <testcase name="TOKEN_MISSING when token file is absent" classname="watchdog token file" time="0.001245" file="src/watchdog-main.test.ts" line="85" assertions="1" />
      <testcase name="TOKEN_EMPTY when token file is blank" classname="watchdog token file" time="0.001171" file="src/watchdog-main.test.ts" line="93" assertions="1" />
    </testsuite>
    <testsuite name="config-validate" file="src/watchdog-main.test.ts" line="103" tests="2" assertions="4" failures="0" skipped="0" time="0.002" hostname="debian1">
      <testcase name="returns TOKEN_MISSING before probes start" classname="config-validate" time="0.001401" file="src/watchdog-main.test.ts" line="113" assertions="1" />
      <testcase name="loads config from disk" classname="config-validate" time="0.001403" file="src/watchdog-main.test.ts" line="123" assertions="3" />
    </testsuite>
    <testsuite name="watchdog runtime wiring" file="src/watchdog-main.test.ts" line="136" tests="3" assertions="11" failures="0" skipped="0" time="0" hostname="debian1">
      <testcase name="tunnel URLs resolve as observe-only targets" classname="watchdog runtime wiring" time="0.000261" file="src/watchdog-main.test.ts" line="137" assertions="4" />
      <testcase name="off-laptop watchdog pages through webhook adapter on probe failure" classname="watchdog runtime wiring" time="0.000739" file="src/watchdog-main.test.ts" line="155" assertions="5" />
      <testcase name="WatchdogFatalError preserves exact codes" classname="watchdog runtime wiring" time="0.000035" file="src/watchdog-main.test.ts" line="186" assertions="2" />
    </testsuite>
  </testsuite>
  <testsuite name="src/watchdog.test.ts" file="src/watchdog.test.ts" tests="9" assertions="19" 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="off-laptop watchdog" file="src/watchdog.test.ts" line="22" tests="9" assertions="19" failures="0" skipped="0" time="0.025" hostname="debian1">
      <testcase name="healthy controller and collector cause no action" classname="off-laptop watchdog" time="0.000202" file="src/watchdog.test.ts" line="23" assertions="2" />
      <testcase name="controller failure restarts once then pages once while collector remains healthy" classname="off-laptop watchdog" time="0.000334" file="src/watchdog.test.ts" line="32" assertions="2" />
      <testcase name="collector failure is detected independently of healthy controller" classname="off-laptop watchdog" time="0.000192" file="src/watchdog.test.ts" line="45" assertions="2" />
      <testcase name="both failures each receive one independent restart and page" classname="off-laptop watchdog" time="0.000192" file="src/watchdog.test.ts" line="57" assertions="2" />
      <testcase name="recovery rearms paging for a later failure" classname="off-laptop watchdog" time="0.000264" file="src/watchdog.test.ts" line="71" assertions="2" />
      <testcase name="sends bearer token to both observation endpoints" classname="off-laptop watchdog" time="0.000161" file="src/watchdog.test.ts" line="91" assertions="1" />
      <testcase name="observe-only targets notify without restart when restartArgv is absent or empty" classname="off-laptop watchdog" time="0.000238" file="src/watchdog.test.ts" line="103" assertions="2" />
      <testcase name="health fetch uses a 10s abort timeout signal" classname="off-laptop watchdog" time="0.000185" file="src/watchdog.test.ts" line="127" assertions="3" />
      <testcase name="aborted probe is treated as a failed health check" classname="off-laptop watchdog" time="0.025401" file="src/watchdog.test.ts" line="142" assertions="3" />
    </testsuite>
  </testsuite>
  <testsuite name="src/capability.test.ts" file="src/capability.test.ts" tests="14" assertions="40" 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="CapabilityService" file="src/capability.test.ts" line="39" tests="14" assertions="40" failures="0" skipped="0" time="0.072" hostname="debian1">
      <testcase name="admits only when command, version, paths, disk, and systemd satisfy manifest" classname="CapabilityService" time="0.00564" file="src/capability.test.ts" line="56" assertions="3" />
      <testcase name="manifest miss emits one capability-missing event and suppresses probe storms" classname="CapabilityService" time="0.004778" file="src/capability.test.ts" line="80" assertions="4" />
      <testcase name="repeated 126/127 opens a persisted class circuit and emits once" classname="CapabilityService" time="0.005831" file="src/capability.test.ts" line="97" assertions="5" />
      <testcase name="closed breaker ignores unrelated exit codes" classname="CapabilityService" time="0.004465" file="src/capability.test.ts" line="111" assertions="2" />
      <testcase name="open breaker stays open for every exit code including success" classname="CapabilityService" time="0.004787" file="src/capability.test.ts" line="119" assertions="1" />
      <testcase name="half-open success closes through recordExit and emits capability-restored" classname="CapabilityService" time="0.004988" file="src/capability.test.ts" line="126" assertions="4" />
      <testcase name="half-open nonzero re-opens and admit does not close probation" classname="CapabilityService" time="0.005311" file="src/capability.test.ts" line="138" assertions="4" />
      <testcase name="breaker opening and capability-missing event commit atomically" classname="CapabilityService" time="0.007206" file="src/capability.test.ts" line="151" assertions="3" />
      <testcase name="unrelated host updates preserve half-open breaker state" classname="CapabilityService" time="0.004927" file="src/capability.test.ts" line="171" assertions="1" />
      <testcase name="status projects breaker through existing capability fields" classname="CapabilityService" time="0.00504" file="src/capability.test.ts" line="183" assertions="2" />
      <testcase name="half-open breaker does not project as a missing command" classname="CapabilityService" time="0.004991" file="src/capability.test.ts" line="195" assertions="3" />
      <testcase name="probeAdmission is side-effect-free" classname="CapabilityService" time="0.005114" file="src/capability.test.ts" line="206" assertions="4" />
      <testcase name="a probe harness failure is reported, not misclassified as a missing command" classname="CapabilityService" time="0.011571" file="src/capability.test.ts" line="219" assertions="3" />
      <testcase name="command breakers do not mutate manifest capability" classname="CapabilityService" time="0.005438" file="src/capability.test.ts" line="236" assertions="1" />
    </testsuite>
  </testsuite>
  <testsuite name="src/index.test.ts" file="src/index.test.ts" tests="12" assertions="39" 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="createSshCapabilityProber" file="src/index.test.ts" line="24" tests="2" assertions="7" failures="0" skipped="0" time="0.006" hostname="debian1">
      <testcase name="rejects unsafe hostnames and foreign manifests without spawning" classname="createSshCapabilityProber" time="0.000409" file="src/index.test.ts" line="25" assertions="3" />
      <testcase name="invokes exact ssh argv transport with 5s timeout and maps outcomes" classname="createSshCapabilityProber" time="0.006825" file="src/index.test.ts" line="54" assertions="4" />
    </testsuite>
    <testsuite name="startController" file="src/index.test.ts" line="122" tests="9" assertions="29" failures="0" skipped="0" time="2.525" hostname="debian1">
      <testcase name="missing config and token boot with defaults and created token" classname="startController" time="0.015296" file="src/index.test.ts" line="152" assertions="6" />
      <testcase name="invalid config stays live degraded with one incident and loopback bind" classname="startController" time="0.021753" file="src/index.test.ts" line="181" assertions="5" />
      <testcase name="empty token file fails with TOKEN_EMPTY" classname="startController" time="0.000445" file="src/index.test.ts" line="212" assertions="1" />
      <testcase name="projects events initially, on append, and on shutdown flush" classname="startController" time="2.232949" file="src/index.test.ts" line="217" assertions="4" />
      <testcase name="systemd notify emits READY once and WATCHDOG every 10s only with NOTIFY_SOCKET" classname="startController" time="0.139229" file="src/index.test.ts" line="286" assertions="3" />
      <testcase name="pending admission recovery completes before bind and READY" classname="startController" time="0.046457" file="src/index.test.ts" line="321" assertions="5" />
      <testcase name="missing systemd-notify logs once and keeps server live" classname="startController" time="0.031818" file="src/index.test.ts" line="375" assertions="2" />
      <testcase name="health stays responsive while an in-flight probe is pending" classname="startController" time="0.02588" file="src/index.test.ts" line="415" assertions="2" />
      <testcase name="shutdown closes the single store" classname="startController" time="0.016824" file="src/index.test.ts" line="463" assertions="1" />
    </testsuite>
    <testsuite name="loadConfigResult bindHost literal" file="src/index.test.ts" line="484" tests="1" assertions="3" failures="0" skipped="0" time="0" hostname="debian1">
      <testcase name="rejects non-loopback bindHost as invalid shape" classname="loadConfigResult bindHost literal" time="0.000456" file="src/index.test.ts" line="495" assertions="3" />
    </testsuite>
  </testsuite>
  <testsuite name="src/k3s-watcher.test.ts" file="src/k3s-watcher.test.ts" tests="11" assertions="27" 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="k3sWatcherConfig" file="src/k3s-watcher.test.ts" line="71" tests="2" assertions="8" failures="0" skipped="0" time="0" hostname="debian1">
      <testcase name="disabled by default, config flag arms it, env overrides both ways" classname="k3sWatcherConfig" time="0.000294" file="src/k3s-watcher.test.ts" line="72" assertions="5" />
      <testcase name="namespace/kubeconfig mirror the same config keys as k3sConfig()" classname="k3sWatcherConfig" time="0.000079" file="src/k3s-watcher.test.ts" line="80" assertions="3" />
    </testsuite>
    <testsuite name="loadKubeClient" file="src/k3s-watcher.test.ts" line="88" tests="2" assertions="5" failures="0" skipped="0" time="0" hostname="debian1">
      <testcase name="parses server/CA/client-cert from a kubeconfig" classname="loadKubeClient" time="0.000313" file="src/k3s-watcher.test.ts" line="89" assertions="4" />
      <testcase name="throws on a kubeconfig missing the current context" classname="loadKubeClient" time="0.000066" file="src/k3s-watcher.test.ts" line="97" assertions="1" />
    </testsuite>
    <testsuite name="newestTerminatedPodsByJob" file="src/k3s-watcher.test.ts" line="102" tests="1" assertions="2" failures="0" skipped="0" time="0" hostname="debian1">
      <testcase name="picks the newest pod per job-name, ignores pods without a terminated build container" classname="newestTerminatedPodsByJob" time="0.000414" file="src/k3s-watcher.test.ts" line="103" assertions="2" />
    </testsuite>
    <testsuite name="buildReportFromPod" file="src/k3s-watcher.test.ts" line="113" tests="2" assertions="2" failures="0" skipped="0" time="0" hostname="debian1">
      <testcase name="builds the emitJobReport() shape from annotations + container args" classname="buildReportFromPod" time="0.000172" file="src/k3s-watcher.test.ts" line="114" assertions="1" />
      <testcase name="returns null when the pod is missing report annotations" classname="buildReportFromPod" time="0.000054" file="src/k3s-watcher.test.ts" line="134" assertions="1" />
    </testsuite>
    <testsuite name="createK3sJobWatcher" file="src/k3s-watcher.test.ts" line="141" tests="4" assertions="10" failures="0" skipped="0" time="0.045" hostname="debian1">
      <testcase name="no-ops without touching the network when k3s_enabled is false" classname="createK3sJobWatcher" time="0.011054" file="src/k3s-watcher.test.ts" line="142" assertions="2" />
      <testcase name="emits a /jobs/report for a newly completed pod and does not re-report it" classname="createK3sJobWatcher" time="0.018574" file="src/k3s-watcher.test.ts" line="159" assertions="3" />
      <testcase name="tick() rejects when the k3s API is unreachable, so the run loop can back off" classname="createK3sJobWatcher" time="0.010995" file="src/k3s-watcher.test.ts" line="185" assertions="1" />
      <testcase name="run loop backs off on repeated failure and resets on success, never a hot loop" classname="createK3sJobWatcher" time="0.006537" file="src/k3s-watcher.test.ts" line="200" assertions="4" />
    </testsuite>
  </testsuite>
  <testsuite name="src/store.test.ts" file="src/store.test.ts" tests="16" assertions="39" 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="ControllerStore" file="src/store.test.ts" line="10" tests="16" assertions="39" failures="0" skipped="0" time="0.087" hostname="debian1">
      <testcase name="opens with revision 0 and empty fleet" classname="ControllerStore" time="0.007988" file="src/store.test.ts" line="26" assertions="3" />
      <testcase name="drops wrapper-named breakers on open and keeps executable ones" classname="ControllerStore" time="0.007355" file="src/store.test.ts" line="32" assertions="3" />
      <testcase name="enforces exact receipt authority at the feature state boundary" classname="ControllerStore" time="0.006863" file="src/store.test.ts" line="50" assertions="2" />
      <testcase name="persists revision across reopen" classname="ControllerStore" time="0.00785" file="src/store.test.ts" line="64" assertions="2" />
      <testcase name="rejects permanent fallback lease" classname="ControllerStore" time="0.004713" file="src/store.test.ts" line="84" assertions="1" />
      <testcase name="expires fallback lease after ttl" classname="ControllerStore" time="0.00717" file="src/store.test.ts" line="90" assertions="2" />
      <testcase name="idempotency replay survives reopen within 24h" classname="ControllerStore" time="0.006109" file="src/store.test.ts" line="105" assertions="2" />
      <testcase name="audit write failure throws AuditWriteError" classname="ControllerStore" time="0.005914" file="src/store.test.ts" line="127" assertions="1" />
      <testcase name="mutations are transactional" classname="ControllerStore" time="0.005228" file="src/store.test.ts" line="140" assertions="2" />
      <testcase name="nested mutations share one transaction and return values" classname="ControllerStore" time="0.004786" file="src/store.test.ts" line="147" assertions="1" />
      <testcase name="persists report job fields and succeeded releases reservations" classname="ControllerStore" time="0.004822" file="src/store.test.ts" line="155" assertions="1" />
      <testcase name="stores only the latest spine config hash per path" classname="ControllerStore" time="0.005584" file="src/store.test.ts" line="183" assertions="2" />
      <testcase name="host eligibility evaluates guards in contract order without reservations" classname="ControllerStore" time="0.005063" file="src/store.test.ts" line="195" assertions="5" />
      <testcase name="transition commit CAS cancels stale journal without state writes" classname="ControllerStore" time="0.005256" file="src/store.test.ts" line="228" assertions="4" />
      <testcase name="clears spine-config degradation whose config file no longer exists" classname="ControllerStore" time="0.005305" file="src/store.test.ts" line="259" assertions="4" />
      <testcase name="emits only one config incident" classname="ControllerStore" time="0.005874" file="src/store.test.ts" line="290" assertions="4" />
    </testsuite>
  </testsuite>
  <testsuite name="src/metrics.test.ts" file="src/metrics.test.ts" tests="5" assertions="31" 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="Prometheus metrics" file="src/metrics.test.ts" line="75" tests="5" assertions="31" failures="0" skipped="0" time="0.05" hostname="debian1">
      <testcase name="omits the sessions series rather than publishing zero when a host cannot report it" classname="Prometheus metrics" time="0.012482" file="src/metrics.test.ts" line="110" assertions="2" />
      <testcase name="omits the builds-24h series rather than publishing zero when no count was recorded" classname="Prometheus metrics" time="0.006996" file="src/metrics.test.ts" line="126" assertions="2" />
      <testcase name="publishes every spec series with exact labels and multi-mount disks" classname="Prometheus metrics" time="0.008794" file="src/metrics.test.ts" line="133" assertions="19" />
      <testcase name="serves Prometheus text and selector-aware vector JSON behind Bearer auth" classname="Prometheus metrics" time="0.018552" file="src/metrics.test.ts" line="221" assertions="7" />
      <testcase name="reuses a short-lived collect cache across repeated queries" classname="Prometheus metrics" time="0.006108" file="src/metrics.test.ts" line="253" assertions="1" />
    </testsuite>
  </testsuite>
  <testsuite name="src/events.test.ts" file="src/events.test.ts" tests="5" assertions="19" 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="structured events" file="src/events.test.ts" line="16" tests="5" assertions="19" failures="0" skipped="0" time="0.09" hostname="debian1">
      <testcase name="enforces the exact event shape and non-job sentinels" classname="structured events" time="0.018255" file="src/events.test.ts" line="43" assertions="5" />
      <testcase name="builds exact report events" classname="structured events" time="0.015353" file="src/events.test.ts" line="64" assertions="2" />
      <testcase name="replays lifecycle events in strict revision order from a cursor" classname="structured events" time="0.036396" file="src/events.test.ts" line="97" assertions="5" />
      <testcase name="rolls back state and event when event append fails" classname="structured events" time="0.013178" file="src/events.test.ts" line="149" assertions="4" />
      <testcase name="projects the authoritative SQLite log to exact JSONL events" classname="structured events" time="0.008315" file="src/events.test.ts" line="164" assertions="3" />
    </testsuite>
  </testsuite>
  <testsuite name="src/config.test.ts" file="src/config.test.ts" tests="9" assertions="34" 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="loadConfigResult" file="src/config.test.ts" line="18" tests="9" assertions="34" failures="0" skipped="0" time="0" hostname="debian1">
      <testcase name="missing config file is healthy with defaults" classname="loadConfigResult" time="0.000228" file="src/config.test.ts" line="30" assertions="3" />
      <testcase name="valid enabled:false is legitimately disabled" classname="loadConfigResult" time="0.000158" file="src/config.test.ts" line="38" assertions="3" />
      <testcase name="invalid TOML is preserved and degrades with one incident" classname="loadConfigResult" time="0.000337" file="src/config.test.ts" line="47" assertions="7" />
      <testcase name="invalid schema is preserved and never local fail-open" classname="loadConfigResult" time="0.000313" file="src/config.test.ts" line="64" assertions="5" />
      <testcase name="non-loopback bindHost is invalid shape and falls back to literal loopback" classname="loadConfigResult" time="0.000202" file="src/config.test.ts" line="79" assertions="4" />
      <testcase name="defaults notify mode to both when section is absent" classname="loadConfigResult" time="0.000331" file="src/config.test.ts" line="89" assertions="2" />
      <testcase name="invalid notify mode degrades with one config incident" classname="loadConfigResult" time="0.000207" file="src/config.test.ts" line="97" assertions="3" />
      <testcase name="BUILD_REMOTE_LOCAL_FALLBACK honored only when config valid" classname="loadConfigResult" time="0.000128" file="src/config.test.ts" line="106" assertions="3" />
      <testcase name="corrupt config honors and records explicit local fallback override" classname="loadConfigResult" time="0.000214" file="src/config.test.ts" line="116" assertions="4" />
    </testsuite>
  </testsuite>
  <testsuite name="src/host-logs.test.ts" file="src/host-logs.test.ts" tests="4" assertions="11" 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="fetchHostLogs" file="src/host-logs.test.ts" line="10" tests="3" assertions="6" failures="0" skipped="0" time="0.001" hostname="debian1">
      <testcase name="rejects invalid hostnames without spawning" classname="fetchHostLogs" time="0.001286" file="src/host-logs.test.ts" line="11" assertions="2" />
      <testcase name="invokes exact ssh argv transport for journalctl" classname="fetchHostLogs" time="0.000357" file="src/host-logs.test.ts" line="22" assertions="2" />
      <testcase name="marks truncated when line count reaches the fetch limit" classname="fetchHostLogs" time="0.000441" file="src/host-logs.test.ts" line="56" assertions="2" />
    </testsuite>
    <testsuite name="GET /hosts/:hostname/logs" file="src/host-logs.test.ts" line="73" tests="1" assertions="5" failures="0" skipped="0" time="0.065" hostname="debian1">
      <testcase name="requires bearer auth and proxies host logs via injected exec" classname="GET /hosts/:hostname/logs" time="0.065682" file="src/host-logs.test.ts" line="81" assertions="5" />
    </testsuite>
  </testsuite>
  <testsuite name="src/scheduler.test.ts" file="src/scheduler.test.ts" tests="17" assertions="47" 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="ClusterScheduler" file="src/scheduler.test.ts" line="11" tests="17" assertions="47" failures="0" skipped="0" time="0.338" hostname="debian1">
      <testcase name="dispatches durable FIFO to least-loaded eligible builders" classname="ClusterScheduler" time="0.022486" file="src/scheduler.test.ts" line="29" assertions="4" />
      <testcase name="requires available capability-passed non-quarantined builder" classname="ClusterScheduler" time="0.00601" file="src/scheduler.test.ts" line="45" assertions="2" />
      <testcase name="atomically prevents concurrent per-host oversubscription" classname="ClusterScheduler" time="0.095947" file="src/scheduler.test.ts" line="65" assertions="4" />
      <testcase name="reconciles terminal jobs after restart without leaking host slots" classname="ClusterScheduler" time="0.02843" file="src/scheduler.test.ts" line="107" assertions="2" />
      <testcase name="restart requeues a placed ticket when no job ledger was created" classname="ClusterScheduler" time="0.033765" file="src/scheduler.test.ts" line="135" assertions="4" />
      <testcase name="ordinary store opens cannot erase an in-flight reservation" classname="ClusterScheduler" time="0.024451" file="src/scheduler.test.ts" line="151" assertions="2" />
      <testcase name="releases the host slot atomically when a job becomes terminal" classname="ClusterScheduler" time="0.014018" file="src/scheduler.test.ts" line="164" assertions="2" />
      <testcase name="releases host reservation exactly once without touching global limit" classname="ClusterScheduler" time="0.012268" file="src/scheduler.test.ts" line="185" assertions="5" />
      <testcase name="spills only when all builders are overloaded and queue exceeds builder count" classname="ClusterScheduler" time="0.012488" file="src/scheduler.test.ts" line="198" assertions="3" />
      <testcase name="terminal spill clears its lease" classname="ClusterScheduler" time="0.02003" file="src/scheduler.test.ts" line="220" assertions="2" />
      <testcase name="spill placement atomically rechecks overload predicate" classname="ClusterScheduler" time="0.02359" file="src/scheduler.test.ts" line="242" assertions="2" />
      <testcase name="newly enrolled builder receives new dispatch without a host allowlist" classname="ClusterScheduler" time="0.013858" file="src/scheduler.test.ts" line="258" assertions="2" />
      <testcase name="reclaims dead tickets by PID starttime identity" classname="ClusterScheduler" time="0.005322" file="src/scheduler.test.ts" line="271" assertions="2" />
      <testcase name="default owner probe rejects a reused PID with mismatched starttime" classname="ClusterScheduler" time="0.005205" file="src/scheduler.test.ts" line="285" assertions="1" />
      <testcase name="transition verbs reconcile scheduler placements and recall spill state" classname="ClusterScheduler" time="0.007482" file="src/scheduler.test.ts" line="295" assertions="6" />
      <testcase name="projects scheduler state through the closed ControllerStatus shape" classname="ClusterScheduler" time="0.005786" file="src/scheduler.test.ts" line="325" assertions="3" />
      <testcase name="migration deterministically preserves the first legacy duplicate ticket" classname="ClusterScheduler" time="0.014175" file="src/scheduler.test.ts" line="338" assertions="1" />
    </testsuite>
  </testsuite>
  <testsuite name="src/status.test.ts" file="src/status.test.ts" tests="3" assertions="6" 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="reported job status" file="src/status.test.ts" line="8" tests="3" assertions="6" failures="0" skipped="0" time="0.017" hostname="debian1">
      <testcase name="projects stale running jobs at read time without writing" classname="reported job status" time="0.00713" file="src/status.test.ts" line="22" assertions="4" />
      <testcase name="derives observed 24h route, success, and exit-127 samples from the job ledger" classname="reported job status" time="0.005647" file="src/status.test.ts" line="41" assertions="1" />
      <testcase name="leaves success unrecorded when no 24h job has a terminal result" classname="reported job status" time="0.005078" file="src/status.test.ts" line="65" assertions="1" />
    </testsuite>
  </testsuite>
  <testsuite name="src/host-metrics.test.ts" file="src/host-metrics.test.ts" tests="10" assertions="24" 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="createSshHostMetricsSampler" file="src/host-metrics.test.ts" line="42" tests="10" assertions="24" failures="0" skipped="0" time="0.004" hostname="debian1">
      <testcase name="rejects unsafe hostnames without spawning" classname="createSshHostMetricsSampler" time="0.000152" file="src/host-metrics.test.ts" line="43" assertions="2" />
      <testcase name="invokes exact ssh argv transport and maps JSON metrics" classname="createSshHostMetricsSampler" time="0.000425" file="src/host-metrics.test.ts" line="61" assertions="4" />
      <testcase name="keeps a summary published one box cadence ago" classname="createSshHostMetricsSampler" time="0.000142" file="src/host-metrics.test.ts" line="91" assertions="1" />
      <testcase name="reports a frozen summary as a stale-telemetry gap, not as absence" classname="createSshHostMetricsSampler" time="0.000143" file="src/host-metrics.test.ts" line="99" assertions="2" />
      <testcase name="names clock disagreement for a summary stamped in the future" classname="createSshHostMetricsSampler" time="0.000126" file="src/host-metrics.test.ts" line="106" assertions="1" />
      <testcase name="names the missing field for a summary with no publication stamp" classname="createSshHostMetricsSampler" time="0.000227" file="src/host-metrics.test.ts" line="114" assertions="2" />
      <testcase name="does not leak the publication stamp into the reported metrics" classname="createSshHostMetricsSampler" time="0.000132" file="src/host-metrics.test.ts" line="125" assertions="1" />
      <testcase name="states why for non-zero exit, timeout, invalid JSON, empty file, and schema mismatch" classname="createSshHostMetricsSampler" time="0.0004" file="src/host-metrics.test.ts" line="131" assertions="5" />
      <testcase name="returns metrics only for successful hosts in a mixed batch" classname="createSshHostMetricsSampler" time="0.000915" file="src/host-metrics.test.ts" line="161" assertions="3" />
      <testcase name="background sampler returns cached metrics without calling inner sample synchronously" classname="createSshHostMetricsSampler" time="0.004268" file="src/host-metrics.test.ts" line="179" assertions="3" />
    </testsuite>
  </testsuite>
  <testsuite name="src/transitions.test.ts" file="src/transitions.test.ts" tests="23" assertions="92" 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="TransitionEngine" file="src/transitions.test.ts" line="15" tests="23" assertions="92" failures="0" skipped="0" time="0.301" hostname="debian1">
      <testcase name="coerces expectedRevision from string" classname="TransitionEngine" time="0.005464" file="src/transitions.test.ts" line="44" assertions="3" />
      <testcase name="stale expectedRevision returns 409 without mutation" classname="TransitionEngine" time="0.006184" file="src/transitions.test.ts" line="50" assertions="3" />
      <testcase name="idempotency replay returns prior result without re-exec" classname="TransitionEngine" time="0.005919" file="src/transitions.test.ts" line="65" assertions="6" />
      <testcase name="idempotency replay wins over stale revision" classname="TransitionEngine" time="0.005911" file="src/transitions.test.ts" line="85" assertions="3" />
      <testcase name="audit write failure returns 403" classname="TransitionEngine" time="0.00687" file="src/transitions.test.ts" line="102" assertions="2" />
      <testcase name="box-drain moves host to draining" classname="TransitionEngine" time="0.005583" file="src/transitions.test.ts" line="118" assertions="2" />
      <testcase name="admission-reconcile does not enter maintenance while jobs run" classname="TransitionEngine" time="0.006162" file="src/transitions.test.ts" line="128" assertions="2" />
      <testcase name="admission-reconcile advances draining to maintenance when idle" classname="TransitionEngine" time="0.006223" file="src/transitions.test.ts" line="143" assertions="2" />
      <testcase name="admission-reconcile probes enrolling hosts concurrently and promotes only green" classname="TransitionEngine" time="0.009814" file="src/transitions.test.ts" line="154" assertions="4" />
      <testcase name="admission-reconcile rejects host args and loses post-probe CAS" classname="TransitionEngine" time="0.009267" file="src/transitions.test.ts" line="184" assertions="5" />
      <testcase name="box-restore requires green health to reach available" classname="TransitionEngine" time="0.007602" file="src/transitions.test.ts" line="228" assertions="5" />
      <testcase name="host quarantine and unquarantine route through persisted breaker states" classname="TransitionEngine" time="0.006573" file="src/transitions.test.ts" line="266" assertions="5" />
      <testcase name="job-retry only for infra failures" classname="TransitionEngine" time="0.006693" file="src/transitions.test.ts" line="295" assertions="3" />
      <testcase name="ci-reconcile clears ci jobs" classname="TransitionEngine" time="0.006066" file="src/transitions.test.ts" line="322" assertions="2" />
      <testcase name="recall-spill clears fallback lease" classname="TransitionEngine" time="0.006057" file="src/transitions.test.ts" line="337" assertions="3" />
      <testcase name="kill-mid-transition for box-drain converges on restart" classname="TransitionEngine" time="0.013306" file="src/transitions.test.ts" line="361" assertions="5" />
      <testcase name="kill-mid-transition for box-restore converges on restart" classname="TransitionEngine" time="0.021157" file="src/transitions.test.ts" line="361" assertions="5" />
      <testcase name="kill-mid-transition for host-quarantine converges on restart" classname="TransitionEngine" time="0.025347" file="src/transitions.test.ts" line="361" assertions="5" />
      <testcase name="kill-mid-transition for host-unquarantine converges on restart" classname="TransitionEngine" time="0.025952" file="src/transitions.test.ts" line="361" assertions="5" />
      <testcase name="kill-mid-transition for admission-reconcile converges on restart" classname="TransitionEngine" time="0.044123" file="src/transitions.test.ts" line="361" assertions="6" />
      <testcase name="kill-mid-transition for job-retry converges on restart" classname="TransitionEngine" time="0.031532" file="src/transitions.test.ts" line="361" assertions="5" />
      <testcase name="kill-mid-transition for ci-reconcile converges on restart" classname="TransitionEngine" time="0.031623" file="src/transitions.test.ts" line="361" assertions="5" />
      <testcase name="kill-mid-transition for recall-spill converges on restart" classname="TransitionEngine" time="0.01832" file="src/transitions.test.ts" line="361" assertions="6" />
    </testsuite>
  </testsuite>
  <testsuite name="src/incidents.test.ts" file="src/incidents.test.ts" tests="14" assertions="57" 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="incident reducer" file="src/incidents.test.ts" line="34" tests="13" assertions="54" failures="0" skipped="0" time="0.076" hostname="debian1">
      <testcase name="implements one data rule for every page-vs-auto-heal matrix row" classname="incident reducer" time="0.000119" file="src/incidents.test.ts" line="60" assertions="1" />
      <testcase name="transient-transport dedupes durable incident and applies notification policy" classname="incident reducer" time="0.006076" file="src/incidents.test.ts" line="65" assertions="6" />
      <testcase name="dead-lease dedupes durable incident and applies notification policy" classname="incident reducer" time="0.012281" file="src/incidents.test.ts" line="65" assertions="6" />
      <testcase name="repeated-command-not-found dedupes durable incident and applies notification policy" classname="incident reducer" time="0.009912" file="src/incidents.test.ts" line="65" assertions="6" />
      <testcase name="queue-stalled-while-idle dedupes durable incident and applies notification policy" classname="incident reducer" time="0.004853" file="src/incidents.test.ts" line="65" assertions="6" />
      <testcase name="fallback-lease-or-drain-stuck dedupes durable incident and applies notification policy" classname="incident reducer" time="0.005225" file="src/incidents.test.ts" line="65" assertions="6" />
      <testcase name="artifact-cas-mismatch dedupes durable incident and applies notification policy" classname="incident reducer" time="0.005705" file="src/incidents.test.ts" line="65" assertions="6" />
      <testcase name="control-service-down dedupes durable incident and applies notification policy" classname="incident reducer" time="0.006406" file="src/incidents.test.ts" line="65" assertions="6" />
      <testcase name="resolve event closes incident and emits lifecycle event" classname="incident reducer" time="0.005222" file="src/incidents.test.ts" line="88" assertions="2" />
      <testcase name="durable replay cursor prevents recount after restart" classname="incident reducer" time="0.006227" file="src/incidents.test.ts" line="101" assertions="1" />
      <testcase name="migrates legacy config incidents into durable incident records" classname="incident reducer" time="0.007609" file="src/incidents.test.ts" line="114" assertions="1" />
      <testcase name="critical package temperature pages and pauses only affected host until clear" classname="incident reducer" time="0.006488" file="src/incidents.test.ts" line="146" assertions="6" />
      <testcase name="publishes alert-state metrics without adding incidents to status" classname="incident reducer" time="0.005318" file="src/incidents.test.ts" line="177" assertions="1" />
    </testsuite>
    <testsuite name="heartbeat" file="src/incidents.test.ts" line="194" tests="1" assertions="3" failures="0" skipped="0" time="0.012" hostname="debian1">
      <testcase name="is bearer-authenticated and reports revision with last event timestamp" classname="heartbeat" time="0.012518" file="src/incidents.test.ts" line="195" assertions="3" />
    </testsuite>
  </testsuite>
  <testsuite name="src/delivery/activation.test.ts" file="src/delivery/activation.test.ts" tests="11" assertions="35" 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="delivery readiness and activation" file="src/delivery/activation.test.ts" line="49" tests="11" assertions="35" failures="0" skipped="0" time="0.082" hostname="debian1">
      <testcase name="refuses every wrong-candidate readiness receipt" classname="delivery readiness and activation" time="0.008661" file="src/delivery/activation.test.ts" line="50" assertions="1" />
      <testcase name="replays deterministic refusal without creating another journal" classname="delivery readiness and activation" time="0.006026" file="src/delivery/activation.test.ts" line="58" assertions="3" />
      <testcase name="resumes same-process retry after lost response without duplicate journal" classname="delivery readiness and activation" time="0.007068" file="src/delivery/activation.test.ts" line="69" assertions="3" />
      <testcase name="orders generic recovery before delivery recovery without cancelling delivery intent" classname="delivery readiness and activation" time="0.006683" file="src/delivery/activation.test.ts" line="78" assertions="6" />
      <testcase name="owns authorized INTERNAL through RETIRED lifecycle and OFF rollback" classname="delivery readiness and activation" time="0.011282" file="src/delivery/activation.test.ts" line="91" assertions="7" />
      <testcase name="persists illegal and malformed recovery refusals without retargeting" classname="delivery readiness and activation" time="0.006779" file="src/delivery/activation.test.ts" line="104" assertions="5" />
      <testcase name="permits OFF rollback and retirement after review expiry" classname="delivery readiness and activation" time="0.008809" file="src/delivery/activation.test.ts" line="119" assertions="1" />
      <testcase name="retires expired ON state and removes state and evidence after rollback window" classname="delivery readiness and activation" time="0.01288" file="src/delivery/activation.test.ts" line="130" assertions="3" />
      <testcase name="rolls back activation atomically on evidence drift" classname="delivery readiness and activation" time="0.007615" file="src/delivery/activation.test.ts" line="150" assertions="3" />
      <testcase name="rolls back on CAS conflict before activation" classname="delivery readiness and activation" time="0.006068" file="src/delivery/activation.test.ts" line="161" assertions="2" />
      <testcase name="fails closed after definition review date" classname="delivery readiness and activation" time="0.005059" file="src/delivery/activation.test.ts" line="177" assertions="1" />
    </testsuite>
  </testsuite>
  <testsuite name="src/delivery/features.test.ts" file="src/delivery/features.test.ts" tests="4" assertions="7" 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="feature evaluation" file="src/delivery/features.test.ts" line="9" tests="4" assertions="7" failures="0" skipped="0" time="0" hostname="debian1">
      <testcase name="denies malformed and unavailable identities" classname="feature evaluation" time="0.000403" file="src/delivery/features.test.ts" line="10" assertions="2" />
      <testcase name="denies corrupt stored identities and valid mismatches" classname="feature evaluation" time="0.000125" file="src/delivery/features.test.ts" line="11" assertions="2" />
      <testcase name="partial states require a bound eligibility decision" classname="feature evaluation" time="0.000117" file="src/delivery/features.test.ts" line="12" assertions="2" />
      <testcase name="denies expired definitions during steady-state evaluation" classname="feature evaluation" time="0.000051" file="src/delivery/features.test.ts" line="13" assertions="1" />
    </testsuite>
  </testsuite>
  <testsuite name="src/delivery/definitions.test.ts" file="src/delivery/definitions.test.ts" tests="4" assertions="12" 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="feature definitions" file="src/delivery/definitions.test.ts" line="7" tests="4" assertions="12" failures="0" skipped="0" time="0.002" hostname="debian1">
      <testcase name="loads the tracked dark definition with a stable digest" classname="feature definitions" time="0.000273" file="src/delivery/definitions.test.ts" line="8" assertions="3" />
      <testcase name="runtime loading disables the entire registry rather than throwing" classname="feature definitions" time="0.000497" file="src/delivery/definitions.test.ts" line="15" assertions="4" />
      <testcase name="fails closed after review expiry and requires a cleanup task" classname="feature definitions" time="0.000397" file="src/delivery/definitions.test.ts" line="26" assertions="2" />
      <testcase name="rejects unknown keys, invalid dates, and duplicate IDs" classname="feature definitions" time="0.002345" file="src/delivery/definitions.test.ts" line="38" assertions="3" />
    </testsuite>
  </testsuite>
</testsuites>
