diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+# v1.0.8.0
+
+## Non-breaking
+
+- Added a `connectdb` spec covering a Unix-socket directory that doesn't exist, asserting `errorMessage` byte-for-byte against the reference. Found `pqi-native`'s failure message is the raw `Show`n `IOException`, which happens to contain `"could not connect to server"` - one of `Hasql.Connection`'s networking (transient) patterns - while libpq's message for the identical `ENOENT` doesn't, so the two adapters drive `Hasql.Connection.acquire` to opposite classifications of the same failure. Found via `hasql` issue #329.
+
 # v1.0.7.0
 
 ## Non-breaking
diff --git a/pqi-conformance.cabal b/pqi-conformance.cabal
--- a/pqi-conformance.cabal
+++ b/pqi-conformance.cabal
@@ -1,6 +1,6 @@
 cabal-version: 3.0
 name: pqi-conformance
-version: 1.0.7.0
+version: 1.0.8.0
 category: Database, PostgreSQL, Testing
 synopsis: Differential conformance tests for pqi adapters
 description:
@@ -94,6 +94,7 @@
     Pqi.Conformance.Operation.CmdStatus
     Pqi.Conformance.Operation.CmdTuples
     Pqi.Conformance.Operation.Connectdb
+    Pqi.Conformance.Operation.Connectdb.MissingUnixSocketDirectory
     Pqi.Conformance.Operation.Connectdb.Rejection
     Pqi.Conformance.Operation.Connectdb.UnixSocketUri
     Pqi.Conformance.Operation.ConnectionNeedsPassword
diff --git a/src/library/Pqi/Conformance/Operation/Connectdb.hs b/src/library/Pqi/Conformance/Operation/Connectdb.hs
--- a/src/library/Pqi/Conformance/Operation/Connectdb.hs
+++ b/src/library/Pqi/Conformance/Operation/Connectdb.hs
@@ -14,6 +14,7 @@
 import qualified Pqi
 import Pqi.Conformance.Harness
 import Pqi.Conformance.Observation
+import qualified Pqi.Conformance.Operation.Connectdb.MissingUnixSocketDirectory as MissingUnixSocketDirectory
 import qualified Pqi.Conformance.Operation.Connectdb.Rejection as Rejection
 import qualified Pqi.Conformance.Operation.Connectdb.UnixSocketUri as UnixSocketUri
 import Pqi.Conformance.Prelude
@@ -25,6 +26,7 @@
 spec adapter = do
   Rejection.spec adapter
   UnixSocketUri.spec adapter
+  MissingUnixSocketDirectory.spec adapter
 
   describe "connectdb" do
     it "opens a usable connection" \conninfo ->
diff --git a/src/library/Pqi/Conformance/Operation/Connectdb/MissingUnixSocketDirectory.hs b/src/library/Pqi/Conformance/Operation/Connectdb/MissingUnixSocketDirectory.hs
new file mode 100644
--- /dev/null
+++ b/src/library/Pqi/Conformance/Operation/Connectdb/MissingUnixSocketDirectory.hs
@@ -0,0 +1,50 @@
+-- | Coverage for @connectdb@ against a Unix-socket directory that doesn't
+-- exist on disk (as opposed to one that exists but has nothing listening).
+--
+-- Both adapters fail at the very same syscall here - a @connect(2)@ on a
+-- Unix-domain socket path whose containing directory is absent, i.e.
+-- @ENOENT@ - so unlike
+-- 'Pqi.Conformance.Operation.Connectdb.UnixSocketUri' (whose two adapters
+-- fail via genuinely unrelated machinery: DNS resolution vs. a filesystem
+-- check), this spec does compare 'Pqi.errorMessage' byte-for-byte. It's
+-- expected to fail on @pqi-native@ right now, and deliberately left that
+-- way: the mismatch it demonstrates is exactly what confuses downstream
+-- string-matching classifiers.
+--
+-- Found in @pqi-native@
+-- (<https://github.com/nikita-volkov/hasql/issues/329>): the candidate's
+-- 'Pqi.errorMessage' is the raw 'Show'n form of the underlying
+-- 'System.IO.Error.IOException' (@could not connect to server:
+-- Network.Socket.connect: ...@), which happens to contain the substring
+-- @"could not connect to server"@ - one of @Hasql.Connection@'s
+-- /networking/ (transient) patterns. libpq's own message for the identical
+-- failure (@connection to server on socket "..." failed: No such file or
+-- directory@) does not contain that phrase, so it falls through to
+-- @OtherConnectionError@ (permanent misconfiguration) instead. The two
+-- adapters therefore drive @Hasql.Connection.acquire@ to opposite
+-- classifications of the same failure.
+module Pqi.Conformance.Operation.Connectdb.MissingUnixSocketDirectory
+  ( spec,
+  )
+where
+
+import qualified Pqi
+import Pqi.Conformance.Harness
+import Pqi.Conformance.Prelude
+import Test.Hspec
+
+spec :: Pqi.Adapter -> SpecWith ByteString
+spec adapter =
+  describe "connectdb" do
+    describe "a Unix-socket directory that doesn't exist" do
+      it "reports a failure message shaped like the reference's" \_ ->
+        differentialConnect adapter conninfo \adapter' conninfo' -> do
+          connection <- Pqi.connectdb adapter' conninfo'
+          observedStatus <- Pqi.status connection
+          observedError <- Pqi.errorMessage connection
+          Pqi.finish connection
+          pure (observedStatus, observedError)
+  where
+    -- A directory that is guaranteed not to exist: this test is only about
+    -- the shape of the failure, not about a real connection succeeding.
+    conninfo = "host=/tmp/pqi-conformance-nonexistent-socket-dir"
