After a real brain-bender of a day, I have commit propagation from the
adjusted branch back to the original branch working, without needing to
reverse adjust the whole tree. This is faster, but the really nice thing
is that it makes individual adjustments simpler to write.

In fact, it's so simple that I took 10 minutes just now to implement a second
adjustment!

[[!format haskell """
adjustTreeItem HideMissingAdjustment h ti@(TreeItem _ _ s) = do
         mk <- catKey s
         case mk of
                 Just k -> ifM (inAnnex k)
                         ( return (Just ti)
      	                 , return Nothing
                         )
                 Nothing -> return (Just ti)
"""]]
