diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+# v1.0.0.0
+
+## Non-breaking
+
+- Differential spec for the new `resStatus` field of `Pqi.Adapter`
+
 # v0.1.2.2
 
 ## Fixes
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -48,7 +48,8 @@
 `Pqi.Conformance.Operation.*` — `...Operation.Exec`, `...Operation.ExecParams`,
 `...Operation.LoSeek`, `...Operation.Fnumber`, and so on, one for every public
 method of `Pqi.IsConnection`, `Pqi.IsResult`, and `Pqi.IsCancel`,
-plus the standalone `Pqi.unescapeBytea`. Each module holds the differential
+plus the connection-independent `Adapter` fields `Pqi.unescapeBytea` and
+`Pqi.resStatus`. Each module holds the differential
 scenarios that exercise that one operation (its happy paths, its edge cases,
 and its error paths). Shared scenario fragments live in
 `Pqi.Conformance.Scenario`.
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: 0.1.2.2
+version: 1.0.0.0
 category: Database, PostgreSQL, Testing
 synopsis: Differential conformance tests for pqi adapters
 description:
@@ -169,6 +169,7 @@
     Pqi.Conformance.Operation.Reset
     Pqi.Conformance.Operation.ResetPoll
     Pqi.Conformance.Operation.ResetStart
+    Pqi.Conformance.Operation.ResStatus
     Pqi.Conformance.Operation.ResultErrorField
     Pqi.Conformance.Operation.ResultErrorMessage
     Pqi.Conformance.Operation.ResultStatus
@@ -201,6 +202,6 @@
     directory >=1.3 && <1.4,
     hspec >=2.11 && <2.12,
     postgresql-libpq >=0.11 && <0.12,
-    pqi ^>=0.1,
+    pqi ^>=1.0,
     testcontainers-postgresql ^>=0.2,
     text >=1.2 && <3,
diff --git a/src/library/Pqi/Conformance.hs b/src/library/Pqi/Conformance.hs
--- a/src/library/Pqi/Conformance.hs
+++ b/src/library/Pqi/Conformance.hs
@@ -93,6 +93,7 @@
 import qualified Pqi.Conformance.Operation.ProtocolVersion as ProtocolVersion
 import qualified Pqi.Conformance.Operation.PutCopyData as PutCopyData
 import qualified Pqi.Conformance.Operation.PutCopyEnd as PutCopyEnd
+import qualified Pqi.Conformance.Operation.ResStatus as ResStatus
 import qualified Pqi.Conformance.Operation.Reset as Reset
 import qualified Pqi.Conformance.Operation.ResetPoll as ResetPoll
 import qualified Pqi.Conformance.Operation.ResetStart as ResetStart
@@ -218,6 +219,7 @@
     SetErrorVerbosity.spec adapter
     -- Result inspection
     ResultStatus.spec adapter
+    ResStatus.spec adapter
     ResultErrorMessage.spec adapter
     ResultErrorField.spec adapter
     UnsafeFreeResult.spec adapter
diff --git a/src/library/Pqi/Conformance/Operation/ResStatus.hs b/src/library/Pqi/Conformance/Operation/ResStatus.hs
new file mode 100644
--- /dev/null
+++ b/src/library/Pqi/Conformance/Operation/ResStatus.hs
@@ -0,0 +1,20 @@
+-- | Coverage for 'Pqi.resStatus': rendering each 'Pqi.ExecStatus' as the
+-- string describing its status code.
+module Pqi.Conformance.Operation.ResStatus
+  ( spec,
+  )
+where
+
+import qualified Pqi
+import Pqi.Conformance.Prelude
+import qualified Pqi.Conformance.Reference as Reference
+import Test.Hspec
+
+spec :: Pqi.Adapter -> SpecWith ByteString
+spec adapter =
+  describe "resStatus" do
+    for_ [minBound .. maxBound] \execStatus ->
+      it (show execStatus) \_ -> do
+        candidate <- Pqi.resStatus adapter execStatus
+        reference <- Pqi.resStatus Reference.adapter execStatus
+        candidate `shouldBe` reference
diff --git a/src/library/Pqi/Conformance/Reference.hs b/src/library/Pqi/Conformance/Reference.hs
--- a/src/library/Pqi/Conformance/Reference.hs
+++ b/src/library/Pqi/Conformance/Reference.hs
@@ -22,7 +22,8 @@
       Pqi.connectdb = \conninfo -> mkConnection <$> LibPQ.connectdb conninfo,
       Pqi.connectStart = \conninfo -> mkConnection <$> LibPQ.connectStart conninfo,
       Pqi.newNullConnection = mkConnection <$> LibPQ.newNullConnection,
-      Pqi.unescapeBytea = \input -> LibPQ.unescapeBytea input
+      Pqi.unescapeBytea = \input -> LibPQ.unescapeBytea input,
+      Pqi.resStatus = \execStatus -> LibPQ.resStatus (toExecStatus execStatus)
     }
 
 -- | Build a 'Pqi.Connection' whose fields close over the given
@@ -232,6 +233,21 @@
   LibPQ.SingleTuple -> Pqi.SingleTuple
   LibPQ.PipelineSync -> Pqi.PipelineSync
   LibPQ.PipelineAbort -> Pqi.PipelineAbort
+
+toExecStatus :: Pqi.ExecStatus -> LibPQ.ExecStatus
+toExecStatus = \case
+  Pqi.EmptyQuery -> LibPQ.EmptyQuery
+  Pqi.CommandOk -> LibPQ.CommandOk
+  Pqi.TuplesOk -> LibPQ.TuplesOk
+  Pqi.CopyOut -> LibPQ.CopyOut
+  Pqi.CopyIn -> LibPQ.CopyIn
+  Pqi.CopyBoth -> LibPQ.CopyBoth
+  Pqi.BadResponse -> LibPQ.BadResponse
+  Pqi.NonfatalError -> LibPQ.NonfatalError
+  Pqi.FatalError -> LibPQ.FatalError
+  Pqi.SingleTuple -> LibPQ.SingleTuple
+  Pqi.PipelineSync -> LibPQ.PipelineSync
+  Pqi.PipelineAbort -> LibPQ.PipelineAbort
 
 fromConnStatus :: LibPQ.ConnStatus -> Pqi.ConnStatus
 fromConnStatus = \case
