diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,46 +1,1 @@
-## [_Unreleased_](https://github.com/freckle/graphula/compare/v2.1.0.0...main)
-
-## [v2.1.0.0](https://github.com/freckle/graphula/compare/v2.0.2.2...v2.1.0.0)
-
-- Some unnecessary `SafeToInsert` have been removed from `node` and `nodeKeyed`.
-  - `node` only requires `SafeToInsert` when the `KeySource` is `SourceDefault`,
-    not when the `KeySource` is `KeyArbitrary`.
-  - `nodeKeyed` no longer ever requires `SafeToInsert`
-- `MonadGraphulaFrontend` has a new `insertKeyed` method.
-
-## [v2.0.2.2](https://github.com/freckle/graphula/compare/v2.0.2.1...v2.0.2.2)
-
-- Add missing MonadUnliftIO instance to GraphulaLoggedT
-
-## [v2.0.2.1](https://github.com/freckle/graphula/compare/v2.0.1.1...v2.0.2.1)
-
-- Support persistent-2.14
-
-## [v2.0.1.1](https://github.com/freckle/graphula/compare/v2.0.0.5...v2.0.1.1)
-
-- Support GHCs 9.0 and 9.2
-
-## [v2.0.1.0](https://github.com/freckle/graphula/compare/v2.0.0.5...v2.0.1.0)
-
-- Add/improve documentation
-- Re-organize previously-internal module
-
-## [v2.0.0.5](https://github.com/freckle/graphula/compare/v2.0.0.4...v2.0.0.5)
-
-- Release without dependencies upper bounds
-
-## [v2.0.0.4](https://github.com/freckle/graphula/compare/v2.0.0.3...v2.0.0.4)
-
-- Relax persistent packages' upper bounds
-
-## [v2.0.0.3](https://github.com/freckle/graphula/compare/v2.0.0.2...v2.0.0.3)
-
-- Relax dependencies upper bounds
-
-## [v2.0.0.2](https://github.com/freckle/graphula/compare/v2.0.0.1...v2.0.0.2)
-
-- Support GHC-8.10 and unliftio-core 2.0.0
-
-## [v2.0.0.1](https://github.com/faktory/graphula/tree/v2.0.0.1)
-
-First tagged release.
+See https://github.com/freckle/graphula/releases
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -209,3 +209,15 @@
   f
 ```
 -->
+
+## Release
+
+To release a new version of this library, push a commit to `main` using a
+conventionally-formatted commit message.
+
+- Prefix with `fix:` to release a new patch version,
+- Prefix with `feat:` to release a new minor version, or
+- Prefix with `feat!:` to release a new major version
+
+To change the "epoch" version, edit it in `package.yaml` and change the
+`.releaserc.yaml` tag prefix to match.
diff --git a/graphula.cabal b/graphula.cabal
--- a/graphula.cabal
+++ b/graphula.cabal
@@ -1,6 +1,6 @@
 cabal-version:      1.12
 name:               graphula
-version:            2.1.0.0
+version:            2.1.0.1
 license:            MIT
 license-file:       LICENSE
 maintainer:         Freckle Education
@@ -60,6 +60,9 @@
         unliftio >=0.2.9.0,
         unliftio-core >=0.1.2.0
 
+    if impl(ghc >=9.8)
+        ghc-options: -Wno-missing-role-annotations
+
     if impl(ghc >=9.2)
         ghc-options: -Wno-missing-kind-signatures -Wno-operator-whitespace
 
@@ -94,6 +97,9 @@
         resourcet >=1.2.2,
         transformers >=0.5.5.0,
         unliftio-core >=0.1.2.0
+
+    if impl(ghc >=9.8)
+        ghc-options: -Wno-missing-role-annotations
 
     if impl(ghc >=9.2)
         ghc-options: -Wno-missing-kind-signatures -Wno-operator-whitespace
diff --git a/src/Graphula/Node.hs b/src/Graphula/Node.hs
--- a/src/Graphula/Node.hs
+++ b/src/Graphula/Node.hs
@@ -59,6 +59,10 @@
 -- > a1 <- node @A () mempty
 -- > a2 <- node @A () $ edit $ \a -> a { someField = True }
 -- > a3 <- node @A () $ ensure $ (== True) . someField
+--
+-- The Semigroup orders the operations from right to left. For example,
+-- @'edit' z <> 'ensure' y <> 'edit' x@ first performs @'edit' x@, then fails if
+-- the value does not satisfy assertion @y@, then performs @'edit' z@.
 newtype NodeOptions a = NodeOptions
   { nodeOptionsEdit :: Kendo Maybe a
   }
diff --git a/test/README.lhs b/test/README.lhs
--- a/test/README.lhs
+++ b/test/README.lhs
@@ -209,3 +209,15 @@
   f
 ```
 -->
+
+## Release
+
+To release a new version of this library, push a commit to `main` using a
+conventionally-formatted commit message.
+
+- Prefix with `fix:` to release a new patch version,
+- Prefix with `feat:` to release a new minor version, or
+- Prefix with `feat!:` to release a new major version
+
+To change the "epoch" version, edit it in `package.yaml` and change the
+`.releaserc.yaml` tag prefix to match.
