diff --git a/library/Salve.hs b/library/Salve.hs
--- a/library/Salve.hs
+++ b/library/Salve.hs
@@ -96,7 +96,6 @@
 buildsLens,
 
 -- * Examples
--- | TODO
 
 -- ** Versions
 -- | Leading zeros are not allowed.
@@ -135,6 +134,17 @@
 --
 -- >>> parseVersion "0.0.0.0"
 -- Nothing
+--
+-- Spaces are not allowed.
+--
+-- >>> parseVersion " 0.0.0"
+-- Nothing
+-- >>> parseVersion "0 .0.0"
+-- Nothing
+-- >>> parseVersion "0. 0.0"
+-- Nothing
+-- >>> parseVersion "0.0.0 "
+-- Nothing
 
 -- ** Constraints
 -- | Partial version numbers are not allowed.
@@ -164,6 +174,17 @@
 -- >>> parseConstraint "1.2.3  ||  2.3.4"
 -- Nothing
 --
+-- Parentheses are not allowed. Note that combining two constraints with a
+-- space (and) has higher precedence than combining them with pipes (or). In
+-- other words, @"a b || c"@ parses as @"(a b) || c"@, not @"a (b || c)"@.
+--
+-- >>> parseConstraint "(1.2.3)"
+-- Nothing
+-- >>> parseConstraint "(1.2.3 || >1.2.3) <1.3.0"
+-- Nothing
+-- >>> parseConstraint "(>1.2.3 <1.3.0) || 1.2.3"
+-- Nothing
+--
 -- Most constraints can be round-tripped through parsing and rendering.
 --
 -- >>> renderConstraint <$> parseConstraint "<1.2.3"
@@ -301,6 +322,17 @@
 --     >>> "1.2.4" ? "1.2.3 || 1.2.4"
 --     True
 --     >>> "1.2.5" ? "1.2.3 || 1.2.4"
+--     False
+--
+-- -   And & or:
+--
+--     >>> "1.2.2" ? "1.2.2 || >1.2.3 <1.3.0"
+--     True
+--     >>> "1.2.3" ? "1.2.2 || >1.2.3 <1.3.0"
+--     False
+--     >>> "1.2.4" ? "1.2.2 || >1.2.3 <1.3.0"
+--     True
+--     >>> "1.3.0" ? "1.2.2 || >1.2.3 <1.3.0"
 --     False
 --
 -- -   Hyphen:
diff --git a/salve.cabal b/salve.cabal
--- a/salve.cabal
+++ b/salve.cabal
@@ -3,7 +3,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           salve
-version:        0.0.2
+version:        0.0.3
 synopsis:       Semantic version numbers and constraints.
 description:    Salve provides semantic version numbers and constraints.
 category:       Distribution
