diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,15 @@
 
 ## [Unreleased]
 
+## 0.20.0.0 — 2026-10-12
+
+### Breaking Changes
+
+- Require the Kiroku 0.11 cohort from
+  mori://shinzui/kiroku/packages/kiroku-store; see the root changelog and
+  upgrade blueprint for subscription constructors, decoding, and migration
+  guidance.
+
 ## 0.19.0.1 — 2026-10-05
 
 ### Other Changes
diff --git a/keiro-ops.cabal b/keiro-ops.cabal
--- a/keiro-ops.cabal
+++ b/keiro-ops.cabal
@@ -1,6 +1,6 @@
 cabal-version: 3.0
 name: keiro-ops
-version: 0.19.0.1
+version: 0.20.0.0
 synopsis: Operational command-line interface for Keiro deployments
 description:
   A standalone database-only console and embeddable command tree for inspecting
@@ -73,10 +73,10 @@
     effectful >=2.6 && <2.8,
     effectful-core >=2.6 && <2.7 || >=2.7.1.1 && <2.8,
     hasql >=1.10 && <1.11,
-    keiro ^>=0.19.0.1,
-    keiro-migrations ^>=0.19.0.1,
-    keiro-pgmq ^>=0.19.0.1,
-    kiroku-store >=0.9.0.1 && <0.10,
+    keiro ^>=0.20.0.0,
+    keiro-migrations ^>=0.20.0.0,
+    keiro-pgmq ^>=0.20.0.0,
+    kiroku-store ^>=0.11.0.0,
     optparse-applicative >=0.18 && <0.20,
     text >=2.1 && <2.2,
     time >=1.12 && <1.15,
@@ -117,11 +117,11 @@
     hasql >=1.10 && <1.11,
     hasql-transaction >=1.1 && <1.3,
     hspec >=2.11,
-    keiro ^>=0.19.0.1,
+    keiro ^>=0.20.0.0,
     keiro-ops,
-    keiro-pgmq ^>=0.19.0.1,
-    keiro-test-support ^>=0.19.0.1,
-    kiroku-store >=0.9.0.1 && <0.10,
+    keiro-pgmq ^>=0.20.0.0,
+    keiro-test-support ^>=0.20.0.0,
+    kiroku-store ^>=0.11.0.0,
     optparse-applicative >=0.18 && <0.20,
     pgmq-migration >=0.6.1.1 && <0.7,
     process >=1.6 && <1.7,
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -1451,7 +1451,7 @@
   expectStore store $
     runTransaction $
       Tx.sql
-        "INSERT INTO subscriptions (subscription_name, stream_name, consumer_group_member, consumer_group_size, last_seen, updated_at) VALUES ('orders', '$all', 1, 2, 3, '2026-08-09 14:01:00+00'), ('billing', '$all', 0, 1, 4, '2026-08-09 14:02:00+00'), ('orders', '$all', 0, 2, 2, '2026-08-09 14:00:00+00')"
+        "INSERT INTO subscriptions (subscription_name, target_kind, consumer_group_member, consumer_group_size, last_seen, updated_at) VALUES ('orders', 'all', 1, 2, 3, '2026-08-09 14:01:00+00'), ('billing', 'all', 0, 1, 4, '2026-08-09 14:02:00+00'), ('orders', 'all', 0, 2, 2, '2026-08-09 14:00:00+00')"
 
 checkpointJsonFixture :: Text -> Int -> Int -> Text -> Int -> Aeson.Value
 checkpointJsonFixture subscription member position updatedAt distance =
