diff --git a/baikai-effectful.cabal b/baikai-effectful.cabal
--- a/baikai-effectful.cabal
+++ b/baikai-effectful.cabal
@@ -1,6 +1,6 @@
 cabal-version:   3.4
 name:            baikai-effectful
-version:         0.3.0.2
+version:         0.3.0.3
 synopsis:        effectful binding for the baikai AI-provider transport
 description:
   A thin, policy-free effectful binding over baikai's transport. Provides the dynamic
@@ -23,6 +23,21 @@
     -fhide-source-paths -Wmissing-export-lists -Wpartial-fields
     -Wmissing-deriving-strategies
 
+  -- Exhaustiveness is an error, not a warning. A non-exhaustive match
+  -- is a crash the compiler already found: it fails at runtime, on
+  -- whichever input reaches the missing branch, usually in front of a
+  -- user. This is not hypothetical here — adding a constructor to
+  -- AgentRunFailure left `failureExitCode` non-exhaustive and shipped a
+  -- pattern-match failure on `baikai agent run --require-evidence`,
+  -- because the warning scrolled past in a build log.
+  --
+  -- Promoted individually rather than through -Werror, which would also
+  -- fail the build on warnings that are stylistic or that a future GHC
+  -- invents, and would push people toward blanket suppression.
+  ghc-options:
+    -Werror=incomplete-patterns -Werror=incomplete-uni-patterns
+    -Werror=incomplete-record-updates
+
   default-language:   GHC2024
   default-extensions:
     DeriveAnyClass
@@ -35,7 +50,7 @@
   hs-source-dirs:  src
   exposed-modules: Baikai.Effectful
   build-depends:
-    , baikai          ^>=0.4.0
+    , baikai          ^>=0.5.0
     , base            >=4.20   && <5
     , effectful-core  ^>=2.6
     , streamly        >=0.11   && <0.13
diff --git a/test/StubProvider.hs b/test/StubProvider.hs
--- a/test/StubProvider.hs
+++ b/test/StubProvider.hs
@@ -84,7 +84,7 @@
     TextStart IndexPayload {contentIndex = 0},
     TextDelta DeltaPayload {contentIndex = 0, delta = t},
     TextEnd BlockEndPayload {contentIndex = 0, content = t},
-    EventDone (doneTerminal Nothing Stop (AssistantMessage (stubPayloadWith t)))
+    EventDone (doneTerminal Nothing Nothing Stop (AssistantMessage (stubPayloadWith t)))
   ]
 
 -- | The provider's streaming completion: ignore the request, emit fixed events.
@@ -100,6 +100,7 @@
     ApiProvider
       { apiTag = stubApi,
         complete = stubComplete t,
-        stream = stubStream t
+        stream = stubStream t,
+        describeThinking = \_ _ -> noThinkingRequested
       }
   pure reg
