zenoh unifies data in motion, data in-use, data at rest and computations. It carefully blends traditional pub/sub with geo-distributed storages, queries and computations, while retaining a level of time and space efficiency that is well beyond any of the mainstream stacks.
This report summarizes scanner evidence for eclipse-zenoh/zenoh, a Rust project with 3,249 GitHub stars. SynthScan examined 222,064 lines of code across 776 source files, recording 1258 pattern matches distributed across 9 syntactic categories. The legacy adjusted pattern signal is 6.2 (Moderate pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 1226 finding(s).
Are imports declared and package/API names verified? 10 finding(s).
Are wrappers, guards, and repeated structures necessary? 22 finding(s).
Which changes need focused human review? 1258 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 1258 distinct pattern matches across 9 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | Cargo.toml | 1 | # | COMMENT |
| LOW | rustfmt.toml | 1 | edition = "2021" | COMMENT |
| LOW | .pre-commit-config.yaml | 1 | # | COMMENT |
| LOW | zenoh-ext/Cargo.toml | 1 | # | COMMENT |
| LOW | zenoh-ext/tests/advanced.rs | 1 | // | COMMENT |
| LOW | zenoh-ext/tests/liveliness.rs | 1 | // | COMMENT |
| LOW | zenoh-ext/examples/Cargo.toml | 1 | # | COMMENT |
| LOW | zenoh-ext/examples/examples/z_advanced_sub.rs | 1 | // | COMMENT |
| LOW | zenoh-ext/examples/examples/z_view_size.rs | 1 | // | COMMENT |
| LOW | zenoh-ext/examples/examples/z_advanced_pub.rs | 1 | use std::time::Duration; | COMMENT |
| LOW | zenoh-ext/examples/examples/z_member.rs | 1 | // | COMMENT |
| LOW | zenoh-ext/examples/src/lib.rs | 1 | //! Examples on using Zenoh. | COMMENT |
| LOW | zenoh-ext/src/advanced_cache.rs | 1 | // | COMMENT |
| LOW | zenoh-ext/src/publisher_ext.rs | 1 | // | COMMENT |
| LOW | zenoh-ext/src/publisher_ext.rs | 21 | /// Allow matching [`AdvancedSubscribers`](crate::AdvancedSubscriber) to recover history and/or missed samples. | COMMENT |
| LOW | zenoh-ext/src/lib.rs | 1 | // | COMMENT |
| LOW | zenoh-ext/src/lib.rs | 21 | //! | COMMENT |
| LOW | zenoh-ext/src/session_ext.rs | 1 | // | COMMENT |
| LOW | zenoh-ext/src/session_ext.rs | 21 | #[zenoh_macros::unstable] | COMMENT |
| LOW | zenoh-ext/src/serialization.rs | 1 | // | COMMENT |
| LOW | zenoh-ext/src/serialization.rs | 121 | /// and could be implemented for user-defined types. | COMMENT |
| LOW | zenoh-ext/src/serialization.rs | 141 | /// deserialized into the given type, an error is returned. | COMMENT |
| LOW | zenoh-ext/src/serialization.rs | 161 | /// Serializer implementing the [Zenoh serialization format][1]. | COMMENT |
| LOW | zenoh-ext/src/serialization.rs | 221 | COMMENT | |
| LOW | zenoh-ext/src/serialization.rs | 561 | T13 / 13, | COMMENT |
| LOW | zenoh-ext/src/publication_cache.rs | 1 | // | COMMENT |
| LOW | zenoh-ext/src/querying_subscriber.rs | 1 | // | COMMENT |
| LOW | zenoh-ext/src/querying_subscriber.rs | 121 | self, | COMMENT |
| LOW | zenoh-ext/src/querying_subscriber.rs | 821 | /// Later on, new fetches can be performed again, calling [`FetchingSubscriber::fetch()`](super::FetchingSubscriber::fet | COMMENT |
| LOW | zenoh-ext/src/querying_subscriber.rs | 841 | /// .await | COMMENT |
| LOW | zenoh-ext/src/querying_subscriber.rs | 981 | COMMENT | |
| LOW | zenoh-ext/src/querying_subscriber.rs | 1001 | /// | COMMENT |
| LOW | zenoh-ext/src/querying_subscriber.rs | 1021 | /// // perform an additional fetch | COMMENT |
| LOW | zenoh-ext/src/querying_subscriber.rs | 1081 | /// | COMMENT |
| LOW | zenoh-ext/src/querying_subscriber.rs | 1101 | /// fetching_subscriber | COMMENT |
| LOW | zenoh-ext/src/advanced_subscriber.rs | 1 | // | COMMENT |
| LOW | zenoh-ext/src/advanced_subscriber.rs | 101 | pub struct RecoveryConfig<const CONFIGURED: bool = true> { | COMMENT |
| LOW | zenoh-ext/src/advanced_subscriber.rs | 301 | /// [`sample_miss_detection`](crate::AdvancedPublisherBuilder::sample_miss_detection). | COMMENT |
| LOW | zenoh-ext/src/advanced_subscriber.rs | 521 | } | COMMENT |
| LOW | zenoh-ext/src/advanced_subscriber.rs | 541 | /// use zenoh_ext::{AdvancedSubscriberBuilderExt, HistoryConfig, RecoveryConfig}; | COMMENT |
| LOW | zenoh-ext/src/group.rs | 1 | // | COMMENT |
| LOW | zenoh-ext/src/subscriber_ext.rs | 1 | // | COMMENT |
| LOW | zenoh-ext/src/subscriber_ext.rs | 61 | /// will run the given `fetch` function. The user defined `fetch` function should fetch some samples and return them | COMMENT |
| LOW | zenoh-ext/src/subscriber_ext.rs | 81 | /// .wait() | COMMENT |
| LOW | zenoh-ext/src/subscriber_ext.rs | 101 | COMMENT | |
| LOW | zenoh-ext/src/subscriber_ext.rs | 121 | /// .querying() | COMMENT |
| LOW | zenoh-ext/src/subscriber_ext.rs | 141 | fn history(self, config: HistoryConfig) -> AdvancedSubscriberBuilder<'a, 'b, 'c, Handler>; | COMMENT |
| LOW | zenoh-ext/src/subscriber_ext.rs | 161 | #[allow(deprecated)] | COMMENT |
| LOW | zenoh-ext/src/subscriber_ext.rs | 181 | /// | COMMENT |
| LOW | zenoh-ext/src/subscriber_ext.rs | 221 | /// | COMMENT |
| LOW | zenoh-ext/src/subscriber_ext.rs | 301 | COMMENT | |
| LOW | zenoh-ext/src/subscriber_ext.rs | 321 | /// ```no_run | COMMENT |
| LOW | zenoh-ext/src/subscriber_ext.rs | 361 | fetch, | COMMENT |
| LOW | zenoh-ext/src/subscriber_ext.rs | 381 | /// # async fn main() { | COMMENT |
| LOW | zenoh-ext/src/advanced_publisher.rs | 1 | // | COMMENT |
| LOW | zenoh-ext/src/advanced_publisher.rs | 61 | } | COMMENT |
| LOW | zenoh-ext/src/advanced_publisher.rs | 81 | /// [`heartbeat`](MissDetectionConfig::heartbeat) and [`sporadic_heartbeat`](MissDetectionConfig::sporadic_heartbeat | COMMENT |
| LOW | zenoh-ext/src/advanced_publisher.rs | 181 | /// Changes the [`zenoh::qos::Reliability`] to apply when routing the data. | COMMENT |
| LOW | zenoh-ext/src/advanced_publisher.rs | 301 | COMMENT | |
| LOW | zenoh-ext/src/advanced_publisher.rs | 321 | /// | COMMENT |
| 1154 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | zenoh/tests/timestamp_instrumentation.rs | 34 | // ─── Helpers ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | zenoh/tests/timestamp_instrumentation.rs | 103 | // ─── Builder & Unit Tests ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | zenoh/tests/timestamp_instrumentation.rs | 187 | // ─── Records Content Verification ─────────────────────────────────────── | COMMENT |
| MEDIUM | zenoh/tests/timestamp_instrumentation.rs | 297 | // ─── Pub/Sub — Same Session ───────────────────────────────────────────── | COMMENT |
| MEDIUM | zenoh/tests/timestamp_instrumentation.rs | 390 | // ─── Pub/Sub — Local + Remote Delivery (destination=Any) ──────────────── | COMMENT |
| MEDIUM | zenoh/tests/timestamp_instrumentation.rs | 554 | // ─── Pub/Sub — Peer-Peer ───────────────────────────────────── | COMMENT |
| MEDIUM | zenoh/tests/timestamp_instrumentation.rs | 685 | // ─── Pub/Sub — Routed Client-Router-Client ────────────────────────────── | COMMENT |
| MEDIUM | zenoh/tests/timestamp_instrumentation.rs | 898 | // ─── Delete Operations ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | zenoh/tests/timestamp_instrumentation.rs | 957 | // ─── Query/Reply — Local + Remote Delivery ────────────────────────────── | COMMENT |
| MEDIUM | zenoh/tests/timestamp_instrumentation.rs | 1116 | // ─── Query/Reply — Peer-Peer ──────────────────────────────────────────── | COMMENT |
| MEDIUM | zenoh/tests/timestamp_instrumentation.rs | 1263 | // ─── Query/Reply — Routed ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | zenoh/tests/timestamp_instrumentation.rs | 1358 | // ─── Reply Error ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | zenoh/tests/timestamp_instrumentation.rs | 1401 | // ─── Custom Timestamp Callback ────────────────────────────────────────── | COMMENT |
| MEDIUM | zenoh/tests/timestamp_instrumentation.rs | 1572 | // ─── Querier API ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | zenoh/src/net/routing/dispatcher/tables.rs | 401 | /// ┌───────────────────┐ ┌───────────────────┐ | COMMENT |
| MEDIUM⚡ | zenoh/src/net/routing/dispatcher/tables.rs | 404 | /// └─────/─────────\───┘ └─────/─────────\───┘ | COMMENT |
| MEDIUM⚡ | zenoh/src/net/routing/dispatcher/tables.rs | 405 | /// ┌────/───────────\──┐ ┌────/───────────\──┐ | COMMENT |
| MEDIUM⚡ | zenoh/src/net/routing/dispatcher/tables.rs | 411 | /// └───────────────────┘ └───────────────────┘ | COMMENT |
| MEDIUM⚡ | zenoh/src/net/routing/dispatcher/tables.rs | 420 | /// ┌───────────────────┐ ┌───────────────────┐ | COMMENT |
| MEDIUM⚡ | zenoh/src/net/routing/dispatcher/tables.rs | 424 | /// └─────/─────────\───┘ └─────/─────────\───┘ | COMMENT |
| MEDIUM⚡ | zenoh/src/net/routing/dispatcher/tables.rs | 425 | /// ┌────/───────────\──┐ ┌────/───────────\──┐ | COMMENT |
| MEDIUM⚡ | zenoh/src/net/routing/dispatcher/tables.rs | 429 | /// └───────────────────┘ └───────────────────┘ | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | zenoh/src/net/runtime/adminspace.rs | 249 | let cfg_rx = admin.context.runtime.state.config.subscribe(); | CODE |
| CRITICAL | zenoh/src/net/runtime/adminspace.rs | 263 | let cfg_guard = admin.context.runtime.state.config.lock(); | CODE |
| CRITICAL | zenoh/src/net/runtime/adminspace.rs | 399 | let conf = &self.context.runtime.state.config.lock(); | CODE |
| CRITICAL | zenoh/src/net/runtime/adminspace.rs | 505 | let conf = &self.context.runtime.state.config.lock(); | CODE |
| CRITICAL | zenoh/src/net/tests/regions/mod.rs | 1020 | #[tracing::instrument(level = "info", skip(self), fields(from = %self.b2a.face, to = %self.a2b.face.state.zid.short( | COMMENT |
| CRITICAL | zenoh/src/net/tests/regions/mod.rs | 1032 | #[tracing::instrument(level = "info", skip(self), fields(from = %self.a2b.face, to = %self.b2a.face.state.zid.short( | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …plementations/posix/posix_shm_provider_backend_talc.rs | 99 | // because of platform specific, our shm segment is >= requested size, so in order to utilize | COMMENT |
| MEDIUM | …lementations/posix/posix_shm_provider_backend_buddy.rs | 100 | // because of platform specific, our shm segment is >= requested size, so in order to utilize | COMMENT |
| MEDIUM | …ations/posix/posix_shm_provider_backend_binary_heap.rs | 132 | // because of platform specific, our shm segment is >= requested size, so in order to utilize | COMMENT |
| MEDIUM | commons/zenoh-shm/src/metadata/subscription.rs | 58 | // fastest path: try to utilize already existing segment | COMMENT |
| MEDIUM | …transport/src/unicast/establishment/ext/shm/segment.rs | 126 | // that don't really utilize all the counters | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ns/zenoh-plugin-storage-manager/src/replication/log.rs | 508 | // we need to check if it is older or not than the one we are processing. | COMMENT |
| LOW | …-storage-manager/src/replication/core/aligner_reply.rs | 238 | /// it is a `Put` we need to check if a Wildcard Update overwrites it in which case we don't | COMMENT |
| LOW | …-storage-manager/src/replication/core/aligner_reply.rs | 428 | // We received an EventMetadata, we need to check if we don't have: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | commons/zenoh-crypto/src/cipher.rs | 108 | let t4 = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labor | CODE |
| LOW | commons/zenoh-crypto/src/cipher.rs | 108 | let t4 = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labor | CODE |
| LOW | examples/examples/z_bytes.rs | 45 | "name": "John Doe", | CODE |
| LOW | examples/examples/z_bytes.rs | 65 | name: String::from("John Doe"), | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | commons/zenoh-shm/src/api/provider/shm_provider.rs | 435 | // TODO: implement provider's async signalling instead of this! | COMMENT |
| LOW | commons/zenoh-shm/src/api/provider/shm_provider.rs | 455 | // TODO: implement provider's async signalling instead of this! | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …s/zenoh-plugin-storage-manager/src/replication/core.rs | 588 | /// NOTE: This function is used to process both the `latest_updates` structure and the Replication | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | zenoh/src/net/routing/dispatcher/resource.rs | 654 | // don't forget to add 1 to the index because of `[1..]` slice above | COMMENT |