diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,12 @@
 See also http://pvp.haskell.org/faq
 
+### 0.2.1.3
+
+_2023-10-14_
+
+* Pacify `x-partial` warning of GHC 9.8
+* Tested with GHC 7.10 - 9.8.1
+
 ### 0.2.1.2
 
 _2023-09-29_
diff --git a/HsYAML.cabal b/HsYAML.cabal
--- a/HsYAML.cabal
+++ b/HsYAML.cabal
@@ -1,6 +1,6 @@
 cabal-version:       1.14
 name:                HsYAML
-version:             0.2.1.2
+version:             0.2.1.3
 
 synopsis:            Pure Haskell YAML 1.2 processor
 homepage:            https://github.com/haskell-hvr/HsYAML
@@ -15,7 +15,7 @@
 category:            Text
 build-type:          Simple
 tested-with:
-  GHC == 9.8.0
+  GHC == 9.8.1
   GHC == 9.6.3
   GHC == 9.4.7
   GHC == 9.2.8
diff --git a/src-test/Main.hs b/src-test/Main.hs
--- a/src-test/Main.hs
+++ b/src-test/Main.hs
@@ -146,7 +146,7 @@
     forM_  lgrp $ \YT.Token{..} -> do
       let tText' | null tText = ""
                  | any (== ' ') tText = replicate tLineChar ' ' ++ show tText
-                 | otherwise  = replicate (tLineChar+1) ' ' ++ tail (init (show tText))
+                 | otherwise  = replicate (tLineChar+1) ' ' ++ drop 1 (init (show tText))
       hPutStrLn stdout $ printf "<stdin>:%d:%d: %-15s| %s" tLine tLineChar (show tCode) tText'
     hPutStrLn stdout ""
   hFlush stdout
diff --git a/src/Data/YAML/Event.hs b/src/Data/YAML/Event.hs
--- a/src/Data/YAML/Event.hs
+++ b/src/Data/YAML/Event.hs
@@ -174,13 +174,19 @@
 
     -- consume {Begin,End}Directives and emit DocumentStart event
     goDirs :: DInfo -> Tok2EvStream
-    goDirs m (Y.Token { Y.tCode = Y.BeginDirective } : rest) = goDir1 m rest
-    goDirs m toks0@(Y.Token { Y.tCode = Y.BeginComment} : _) = goComment toks0 (goDirs m)
+    goDirs m (Y.Token { Y.tCode = Y.BeginDirective } : rest) =
+      goDir1 m rest
+    goDirs m toks0@(Y.Token { Y.tCode = Y.BeginComment} : _) =
+      goComment toks0 (goDirs m)
     goDirs m (tok@Y.Token { Y.tCode = Y.DirectivesEnd } : rest)
       | Just (1,mi) <- diVer m = Right (getEvPos (DocumentStart (DirEndMarkerVersion mi)) tok) : go1 m rest
       | otherwise              = Right (getEvPos (DocumentStart DirEndMarkerNoVersion) tok) : go1 m rest
-    goDirs _ xs@(Y.Token { Y.tCode = Y.BeginDocument } : _) = err xs
-    goDirs m xs = Right ( getEvPos (DocumentStart NoDirEndMarker) (head xs) ): go1 m xs
+    goDirs _ xs@(Y.Token { Y.tCode = Y.BeginDocument } : _) =
+      err xs
+    goDirs m xs@(tok : _) =
+      Right (getEvPos (DocumentStart NoDirEndMarker) tok) : go1 m xs
+    goDirs _ xs =
+      err xs
 
     -- single directive
     goDir1 :: DInfo -> [Y.Token] -> EvStream
