diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,14 @@
 # Revision history for kiroku-metrics
 
+## 0.1.0.4 -- 2026-08-11
+
+### Other Changes
+
+* The collector consumes the new subscription checkpoint-resolution lifecycle
+  event and records its durable position as the subscription checkpoint gauge.
+  It also remains exhaustive for typed missing-checkpoint startup refusal.
+* Requires `kiroku-store ^>=0.5`. No `kiroku-metrics` API changed.
+
 ## 0.1.0.3 -- 2026-08-09
 
 ### Bug Fixes
diff --git a/kiroku-metrics.cabal b/kiroku-metrics.cabal
--- a/kiroku-metrics.cabal
+++ b/kiroku-metrics.cabal
@@ -1,6 +1,6 @@
 cabal-version:   3.0
 name:            kiroku-metrics
-version:         0.1.0.3
+version:         0.1.0.4
 synopsis:
   Metrics, health, and event-streaming HTTP endpoints for Kiroku
 
@@ -60,7 +60,7 @@
     , hasql-pool      >=1.2  && <1.5
     , http-types      >=0.12 && <0.13
     , kiroku-cli      ^>=0.2
-    , kiroku-store    ^>=0.4
+    , kiroku-store    ^>=0.5
     , stm             >=2.5  && <2.6
     , text            >=2.0  && <2.2
     , time            >=1.12 && <1.15
@@ -102,7 +102,7 @@
     , http-client          >=0.7  && <0.8
     , http-types           >=0.12 && <0.13
     , kiroku-metrics
-    , kiroku-store         ^>=0.4
+    , kiroku-store         ^>=0.5
     , kiroku-test-support  ^>=0.1
     , lens                 >=5.2  && <5.4
     , scientific           >=0.3  && <0.4
@@ -137,7 +137,7 @@
     , http-types           >=0.12 && <0.13
     , kiroku-cli           ^>=0.2
     , kiroku-metrics
-    , kiroku-store         ^>=0.4
+    , kiroku-store         ^>=0.5
     , kiroku-test-support
     , lens                 >=5.2  && <5.4
     , scientific           >=0.3  && <0.4
diff --git a/src/Kiroku/Metrics/Collector.hs b/src/Kiroku/Metrics/Collector.hs
--- a/src/Kiroku/Metrics/Collector.hs
+++ b/src/Kiroku/Metrics/Collector.hs
@@ -50,7 +50,12 @@
     EventPublisher (..),
     publisherPosition,
  )
-import Kiroku.Store.Subscription.Types (SubscriptionName (..))
+import Kiroku.Store.Subscription.Types (
+    CheckpointInitialization (..),
+    SubscriptionCheckpointKey (..),
+    SubscriptionCheckpointMissing (..),
+    SubscriptionName (..),
+ )
 import Kiroku.Store.Types (GlobalPosition (..))
 
 -- | Opaque collector handle. Construct with 'newKirokuMetrics'.
@@ -168,6 +173,12 @@
     KirokuEventSubscriptionDbError name phase _ _ -> do
         bumpCounters km (bumpDbPhase phase)
         touchSub km name (\s -> s{smDbErrorCount = s.smDbErrorCount + 1})
+    KirokuEventSubscriptionCheckpointResolved initialization _ ->
+        case initialization of
+            ExistingCheckpoint (SubscriptionCheckpointKey name _) pos -> recordPosition km name pos
+            InitializedCheckpoint _ (SubscriptionCheckpointKey name _) pos -> recordPosition km name pos
+    KirokuEventSubscriptionCheckpointMissing (SubscriptionCheckpointMissing (SubscriptionCheckpointKey name _)) _ ->
+        touchSub km name id
     KirokuEventSubscriptionStarted name pos _ -> do
         bumpCounters km (\c -> c{subscriptionsStarted = c.subscriptionsStarted + 1})
         recordPosition km name pos
diff --git a/test/Test/CollectorSpec.hs b/test/Test/CollectorSpec.hs
--- a/test/Test/CollectorSpec.hs
+++ b/test/Test/CollectorSpec.hs
@@ -34,7 +34,12 @@
     SubscriptionStopReason (..),
  )
 import Kiroku.Store.Observability (SubscriptionDeliveryPhase (..))
-import Kiroku.Store.Subscription.Types (SubscriptionName (..))
+import Kiroku.Store.Subscription.Types (
+    CheckpointInitialization (..),
+    MissingCheckpointPolicy (..),
+    SubscriptionCheckpointKey (..),
+    SubscriptionName (..),
+ )
 import Kiroku.Store.Types (GlobalPosition (..))
 
 {- | A collector whose fake store readers report the given global position and
@@ -109,6 +114,23 @@
             Just m -> do
                 m.lastKnownPosition `shouldBe` 5
                 m.lag `shouldBe` 7
+
+    it "records the durable position from checkpoint resolution telemetry" $ do
+        let key = SubscriptionCheckpointKey sub 0
+        snap <-
+            runScript
+                (pure (GlobalPosition 12))
+                (pure 0)
+                [ KirokuEventSubscriptionCheckpointResolved
+                    (InitializedCheckpoint FromCurrentHead key (GlobalPosition 9))
+                    NonGroup
+                ]
+                []
+        case Map.lookup "p" snap.subscriptions of
+            Nothing -> expectationFailure "expected resolved subscription in snapshot"
+            Just metrics -> do
+                metrics.lastKnownPosition `shouldBe` 9
+                metrics.lag `shouldBe` 3
 
     it "advances last-known position monotonically and never reports negative lag" $ do
         snap <-
