diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,14 @@
 # Changelog
 
+## 0.13.0.0 — 2026-11-12
+
+### Breaking Changes
+
+- Require `shibuya-core ^>=0.13.0.0` in the library, test suite and load
+  executables, matching the shared release. `shibuya-core` 0.13 adds the strict
+  `Adapter.telemetry` field; code that constructs an `Adapter` must supply
+  `telemetry = defaultAdapterTelemetry`. No `shibuya-metrics` API changes.
+
 ## 0.12.0.0 — 2026-10-26
 
 ### Breaking Changes
diff --git a/bench/ObserverLoad.hs b/bench/ObserverLoad.hs
--- a/bench/ObserverLoad.hs
+++ b/bench/ObserverLoad.hs
@@ -19,7 +19,7 @@
 import GHC.Stats (GCDetails (..), RTSStats (..), getRTSStats)
 import Network.Wai.Handler.Warp qualified as Warp
 import Network.WebSockets qualified as WS
-import Shibuya.Adapter (Adapter (..))
+import Shibuya.Adapter (Adapter (..), defaultAdapterTelemetry)
 import Shibuya.Core.Ack (AckDecision (AckOk))
 import Shibuya.Core.AckHandle (AckHandle (..))
 import Shibuya.Core.Ingested (mkIngested)
@@ -59,7 +59,7 @@
                 pure $ mkIngested envelope ack
             )
             $ Stream.fromList [1 .. count]
-        adapter = Adapter "observer-load" source (pure ())
+        adapter = Adapter "observer-load" source (pure ()) defaultAdapterTelemetry
     processor <-
       runEff $
         runTracingNoop $
diff --git a/shibuya-metrics.cabal b/shibuya-metrics.cabal
--- a/shibuya-metrics.cabal
+++ b/shibuya-metrics.cabal
@@ -1,6 +1,6 @@
 cabal-version: 3.12
 name: shibuya-metrics
-version: 0.12.0.0
+version: 0.13.0.0
 synopsis: Metrics web server for Shibuya queue processing framework
 description:
   Provides HTTP/JSON, Prometheus, and WebSocket endpoints for
@@ -53,7 +53,7 @@
     containers ^>=0.7,
     http-types ^>=0.12,
     prometheus-client ^>=1.1,
-    shibuya-core ^>=0.12.0.0,
+    shibuya-core ^>=0.13.0.0,
     stm ^>=2.5,
     text ^>=2.1,
     time ^>=1.14,
@@ -113,7 +113,7 @@
     http-client ^>=0.7.19,
     http-types,
     nqe ^>=0.6,
-    shibuya-core ^>=0.12.0.0,
+    shibuya-core ^>=0.13.0.0,
     shibuya-metrics,
     stm,
     streamly-core,
@@ -154,7 +154,7 @@
     http-client ^>=0.7.19,
     http-types,
     nqe ^>=0.6,
-    shibuya-core ^>=0.12.0.0,
+    shibuya-core ^>=0.13.0.0,
     shibuya-metrics,
     stm,
     time,
@@ -187,7 +187,7 @@
     bytestring,
     effectful >=2.6.1 && <2.8,
     nqe ^>=0.6,
-    shibuya-core ^>=0.12.0.0,
+    shibuya-core ^>=0.13.0.0,
     shibuya-metrics,
     stm,
     streamly-core ^>=0.3,
@@ -221,7 +221,7 @@
     bytestring,
     effectful >=2.6.1 && <2.8,
     nqe ^>=0.6,
-    shibuya-core ^>=0.12.0.0,
+    shibuya-core ^>=0.13.0.0,
     shibuya-metrics,
     stm,
     text,
diff --git a/test/Shibuya/Metrics/ControlSpec.hs b/test/Shibuya/Metrics/ControlSpec.hs
--- a/test/Shibuya/Metrics/ControlSpec.hs
+++ b/test/Shibuya/Metrics/ControlSpec.hs
@@ -17,7 +17,7 @@
 import Network.Wai.Test
 import Network.WebSockets qualified as WS
 import Shibuya qualified as Public
-import Shibuya.Adapter (Adapter (..))
+import Shibuya.Adapter (Adapter (..), defaultAdapterTelemetry)
 import Shibuya.Core.Metrics
 import Shibuya.Internal.Runner.Master
 import Shibuya.Internal.Runner.Pause
@@ -134,7 +134,7 @@
                         pure $ fmap (\() -> (Public.mkIngested (Public.mkEnvelope (Public.MessageId "live") ()) (Public.AckHandle (\_ -> liftIO $ atomically $ modifyTVar' finalized (+ 1))), n + 1)) next
                     )
                     (1 :: Int)
-                adapter = Adapter "live" source (liftIO $ atomically $ writeTVar stopped True)
+                adapter = Adapter "live" source (liftIO $ atomically $ writeTVar stopped True) defaultAdapterTelemetry
                 handler _ = do
                   liftIO $ atomically $ writeTQueue started ()
                   liftIO $ atomically $ takeTMVar handlerGate
