Move telemetry module into quire-core, delete quire-telemetry crate
Both consumers already pulled in all the same deps; the separate crate
was pure ceremony. quire-core::telemetry is the new home.

https://claude.ai/code/session_016ieFpQg1FfFhs6meg1aRom
change
commit 276a8247aca21623e4b70efda42b118956094215
author Claude <noreply@anthropic.com>
date
parent 8c23c54e
diff --git a/Cargo.lock b/Cargo.lock
index 85e8c8c..5378367 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2133,7 +2133,6 @@ dependencies = [
  "miette",
  "mlua",
  "quire-core",
- "quire-telemetry",
  "sentry",
  "sentry-tracing",
  "serde",
@@ -2155,11 +2154,13 @@ dependencies = [
  "mlua",
  "petgraph",
  "regex",
+ "sentry",
  "serde",
  "serde_json",
  "tempfile",
  "thiserror",
  "tracing",
+ "tracing-subscriber",
 ]
 
 [[package]]
@@ -2180,7 +2181,6 @@ dependencies = [
  "petgraph",
  "predicates",
  "quire-core",
- "quire-telemetry",
  "regex",
  "rusqlite",
  "rusqlite_migration",
@@ -2200,17 +2200,6 @@ dependencies = [
  "walkdir",
 ]
 
-[[package]]
-name = "quire-telemetry"
-version = "0.1.0"
-dependencies = [
- "miette",
- "sentry",
- "serde_json",
- "tracing",
- "tracing-subscriber",
-]
-
 [[package]]
 name = "quote"
 version = "1.0.45"
diff --git a/Cargo.toml b/Cargo.toml
index 89e2bc0..c1877af 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,5 +1,5 @@
 [workspace]
-members = ["quire-ci", "quire-core", "quire-server", "quire-telemetry"]
+members = ["quire-ci", "quire-core", "quire-server"]
 resolver = "3"
 
 [workspace.dependencies]
diff --git a/quire-ci/Cargo.toml b/quire-ci/Cargo.toml
index 179c59f..a607d29 100644
--- a/quire-ci/Cargo.toml
+++ b/quire-ci/Cargo.toml
@@ -10,7 +10,6 @@ jiff = { workspace = true }
 miette = { workspace = true, features = ["fancy"] }
 mlua = { workspace = true }
 quire-core = { path = "../quire-core" }
-quire-telemetry = { path = "../quire-telemetry" }
 sentry = { workspace = true }
 sentry-tracing = { workspace = true }
 serde = { workspace = true }
diff --git a/quire-ci/src/main.rs b/quire-ci/src/main.rs
index 3242207..519b7ed 100644
--- a/quire-ci/src/main.rs
+++ b/quire-ci/src/main.rs
@@ -211,7 +211,7 @@ fn main() -> miette::Result<()> {
             // Drop order: `_sentry` flushes first (still inside the
             // runtime), then `_enter`, then `rt`.
             let _sentry = init_sentry(sentry_handoff.as_ref(), &meta);
-            let miette_layer = quire_telemetry::MietteLayer::new()
+            let miette_layer = quire_core::telemetry::MietteLayer::new()
                 .with_type::<JobError>()
                 .with_type::<quire_core::fennel::FennelError>();
             init_tracing(miette_layer)?;
@@ -237,7 +237,7 @@ fn init_sentry(
         handoff.dsn.as_str(),
         sentry::ClientOptions {
             release: Some(VERSION.into()),
-            before_send: Some(std::sync::Arc::new(quire_telemetry::before_send)),
+            before_send: Some(std::sync::Arc::new(quire_core::telemetry::before_send)),
             ..Default::default()
         },
     ));
@@ -272,7 +272,7 @@ fn init_sentry(
 /// Initialize tracing with a stderr fmt layer plus the sentry-tracing
 /// bridge so `tracing::error!` (and warn, if configured) events show
 /// up in Sentry alongside panics.
-fn init_tracing(miette_layer: quire_telemetry::MietteLayer) -> miette::Result<()> {
+fn init_tracing(miette_layer: quire_core::telemetry::MietteLayer) -> miette::Result<()> {
     let filter = EnvFilter::builder()
         .with_env_var("QUIRE_LOG")
         .from_env()
diff --git a/quire-core/Cargo.toml b/quire-core/Cargo.toml
index aa9d6ea..d83c075 100644
--- a/quire-core/Cargo.toml
+++ b/quire-core/Cargo.toml
@@ -10,10 +10,12 @@ miette = { workspace = true }
 mlua = { workspace = true }
 petgraph = { workspace = true }
 regex = { workspace = true }
+sentry = { workspace = true }
 serde = { workspace = true }
+serde_json = { workspace = true }
 thiserror = { workspace = true }
 tracing = { workspace = true }
+tracing-subscriber = { workspace = true }
 
 [dev-dependencies]
-serde_json = { workspace = true }
 tempfile = { workspace = true }
diff --git a/quire-core/src/lib.rs b/quire-core/src/lib.rs
index f3f8311..d237d9c 100644
--- a/quire-core/src/lib.rs
+++ b/quire-core/src/lib.rs
@@ -4,3 +4,4 @@
 pub mod ci;
 pub mod fennel;
 pub mod secret;
+pub mod telemetry;
diff --git a/quire-telemetry/src/lib.rs b/quire-core/src/telemetry.rs
similarity index 100%
rename from quire-telemetry/src/lib.rs
rename to quire-core/src/telemetry.rs
diff --git a/quire-server/Cargo.toml b/quire-server/Cargo.toml
index a9c6d5a..13f1a25 100644
--- a/quire-server/Cargo.toml
+++ b/quire-server/Cargo.toml
@@ -17,7 +17,6 @@ path = "src/bin/quire/main.rs"
 
 [dependencies]
 quire-core = { path = "../quire-core" }
-quire-telemetry = { path = "../quire-telemetry" }
 
 fs-err = { workspace = true, features = ["tokio"] }
 jiff = { workspace = true }
diff --git a/quire-server/src/bin/quire/main.rs b/quire-server/src/bin/quire/main.rs
index 44f741e..3670e1a 100644
--- a/quire-server/src/bin/quire/main.rs
+++ b/quire-server/src/bin/quire/main.rs
@@ -131,7 +131,7 @@ fn init_sentry(quire: &Quire) -> Option<ClientInitGuard> {
         dsn,
         sentry::ClientOptions {
             release: Some(VERSION.into()),
-            before_send: Some(std::sync::Arc::new(quire_telemetry::before_send)),
+            before_send: Some(std::sync::Arc::new(quire_core::telemetry::before_send)),
             ..Default::default()
         },
     ));
@@ -143,7 +143,7 @@ fn init_sentry(quire: &Quire) -> Option<ClientInitGuard> {
 ///
 /// Emits structured JSON when stderr is not a terminal (e.g. piped to a log
 /// collector), and human-readable text when running interactively.
-fn init_tracing(miette_layer: quire_telemetry::MietteLayer) -> Result<()> {
+fn init_tracing(miette_layer: quire_core::telemetry::MietteLayer) -> Result<()> {
     let filter = EnvFilter::builder()
         .with_env_var("QUIRE_LOG")
         .from_env()
@@ -175,7 +175,7 @@ async fn main() -> Result<()> {
         None => Quire::default(),
     };
     let _sentry = init_sentry(&quire);
-    let miette_layer = quire_telemetry::MietteLayer::new()
+    let miette_layer = quire_core::telemetry::MietteLayer::new()
         .with_type::<quire::Error>()
         .with_type::<quire::ci::Error>()
         .with_type::<quire_core::fennel::FennelError>();
diff --git a/quire-telemetry/Cargo.toml b/quire-telemetry/Cargo.toml
deleted file mode 100644
index 987ee1c..0000000
--- a/quire-telemetry/Cargo.toml
+++ /dev/null
@@ -1,11 +0,0 @@
-[package]
-name = "quire-telemetry"
-version = "0.1.0"
-edition = "2024"
-
-[dependencies]
-miette = { workspace = true }
-sentry = { workspace = true }
-serde_json = { workspace = true }
-tracing = { workspace = true }
-tracing-subscriber = { workspace = true }