diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,10 @@
 # Revision history for butcher
 
+## 1.3.2.2  -- December 2018
+
+* Fix too-shallow descriptions on siblings for partial parses returned
+  for interactive usage
+
 ## 1.3.2.1  -- October 2018
 
 * Adapt/Use latest version of `deque` to fix ghc-8.6 problems
diff --git a/butcher.cabal b/butcher.cabal
--- a/butcher.cabal
+++ b/butcher.cabal
@@ -1,12 +1,12 @@
 name:                butcher
-version:             1.3.2.1
+version:             1.3.2.2
 synopsis:            Chops a command or program invocation into digestable pieces.
 description:         See the <https://github.com/lspitzner/butcher/blob/master/README.md README> (it is properly formatted on github).
 license:             BSD3
 license-file:        LICENSE
 author:              Lennart Spitzner
 maintainer:          Lennart Spitzner <hexagoxel@hexagoxel.de>
-copyright:           Copyright (C) 2016-2018 Lennart Spitzner
+copyright:           Copyright (C) 2016-2019 Lennart Spitzner
 category:            UI
 build-type:          Simple
 Stability:           experimental
@@ -50,7 +50,7 @@
     , extra <1.7
     , void <0.8
     , bifunctors <5.6
-    , deque >=0.2.4 && <0.3
+    , deque >=0.2.4 && <0.5
     }
   hs-source-dirs:      src
   default-language:    Haskell2010
diff --git a/src/UI/Butcher/Monadic/Internal/Core.hs b/src/UI/Butcher/Monadic/Internal/Core.hs
--- a/src/UI/Butcher/Monadic/Internal/Core.hs
+++ b/src/UI/Butcher/Monadic/Internal/Core.hs
@@ -732,28 +732,31 @@
               Just $ (Just name, child, act, vis, InputArgs strr)
             (Nothing, _) -> Just $ (Nothing, child, act, vis, input)
             _            -> Nothing
+      combined_child_list `forM_` \(child_name, (vis, child, _)) -> do
+        let initialDesc :: CommandDesc out = emptyCommandDesc
+        -- get the shallow desc for the child in a separate env.
+        let (subCmd, subStack) =
+              runIdentity
+                $ MultiRWSS.runMultiRWSTNil
+                $ MultiRWSS.withMultiStateSA initialDesc
+                $ MultiRWSS.withMultiStateS (StackBottom mempty)
+                $ iterM processCmdShallow child
+        cmd_children %=+ Deque.snoc
+          ( child_name
+          , postProcessCmd subStack subCmd { _cmd_visibility = vis }
+          )
       case mRest of
         Nothing -> do -- a child not matching what we have in the input
-          let initialDesc :: CommandDesc out = emptyCommandDesc
           -- get the shallow desc for the child in a separate env.
-          combined_child_list `forM_` \(child_name, (vis, child, _)) -> do
-            let (subCmd, subStack) =
-                  runIdentity
-                    $ MultiRWSS.runMultiRWSTNil
-                    $ MultiRWSS.withMultiStateSA initialDesc
-                    $ MultiRWSS.withMultiStateS (StackBottom mempty)
-                    $ iterM processCmdShallow child
-            cmd_children %=+ Deque.snoc
-              ( child_name
-              , postProcessCmd subStack subCmd { _cmd_visibility = vis }
-              )
           -- proceed regularly on the same layer
           processMain $ restCmdParser
         Just (name, vis, child, act, rest) -> do -- matching child -> descend
           -- process all remaining stuff on the same layer shallowly,
-          -- including the current node. This will be replaced later.
+          -- including the current node. This will walk over the child
+          -- definition(s) again, but that is harmless because we do not
+          -- overwrite them.
           iterM processCmdShallow f
-          -- so the descend
+          -- do the descend
           cmd <- do
             c :: CommandDesc out      <- mGet
             prevStack :: CmdDescStack <- mGet
