DORA (Dataflow-Oriented Robotic Architecture) is middleware designed to streamline and simplify the creation of AI-based robotic applications. It offers low latency, composable, and distributed dataflow capabilities. Applications are modeled as directed graphs, also referred to as pipelines.
This report presents the forensic synthetic code analysis of dora-rs/dora, a Rust project with 3,842 GitHub stars. SynthScan v2.0 examined 192,842 lines of code across 958 source files, recording 863 pattern matches distributed across 16 syntactic categories. The overall adjusted score of 6.5 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 863 distinct pattern matches across 16 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker-compose.ros2dev.yml | 1 | # ROS2-bridge dev environment for macOS — issue #1170, Phase 0. | COMMENT |
| LOW | docker-compose.ros2dev.yml | 21 | environment: | COMMENT |
| LOW | apis/c++/node/src/lib.rs | 41 | Error, | COMMENT |
| LOW | apis/c++/node/src/lib.rs | 121 | fn next(self: &mut Events) -> Box<DoraEvent>; | COMMENT |
| LOW | apis/c++/node/src/lib.rs | 141 | /// Pop the next event from a drained snapshot. Returns | COMMENT |
| LOW | apis/c++/node/src/lib.rs | 161 | /// Return the full `Descriptor` (the parsed dataflow yaml) | COMMENT |
| LOW | apis/c++/node/src/lib.rs | 281 | events.next() | COMMENT |
| LOW | apis/c++/node/src/lib.rs | 381 | COMMENT | |
| LOW | apis/c++/operator/src/lib.rs | 41 | /// Called when an upstream input stream closes (the daemon | COMMENT |
| LOW | apis/python/cli/src/lib.rs | 1 | use eyre::Context; | COMMENT |
| LOW | apis/python/node/src/lib.rs | 81 | /// - A new builtin function `logging.host_log` transcodes `logging.LogRecord`s to `tracing::Event`s. This function | COMMENT |
| LOW | apis/python/node/src/lib.rs | 141 | /// read-after-free. Entries are inserted on free_memory_pool and never | COMMENT |
| LOW | apis/python/node/src/lib.rs | 201 | COMMENT | |
| LOW | apis/python/node/src/lib.rs | 221 | const DORADMA_MAGIC: &[u8; 8] = b"DORADMA\x00"; | COMMENT |
| LOW | apis/python/node/src/lib.rs | 501 | node_id, | COMMENT |
| LOW | apis/python/node/src/lib.rs | 581 | } | COMMENT |
| LOW | apis/python/node/src/lib.rs | 661 | Err(_) => None, | COMMENT |
| LOW | apis/python/node/src/lib.rs | 681 | /// | COMMENT |
| LOW | apis/python/node/src/lib.rs | 721 | /// Default behaviour is to timeout after 2 seconds. | COMMENT |
| LOW | apis/python/node/src/lib.rs | 741 | } | COMMENT |
| LOW | apis/python/node/src/lib.rs | 801 | /// ## Wire format | COMMENT |
| LOW | apis/python/node/src/lib.rs | 821 | /// # must be released before `with` exits or send() refuses. | COMMENT |
| LOW | apis/python/node/src/lib.rs | 901 | arrow::array::make_array(arrow_array), | COMMENT |
| LOW | apis/python/node/src/lib.rs | 981 | .log_with_fields(level, message, target, ordered.as_ref()); | COMMENT |
| LOW | apis/python/node/src/lib.rs | 1001 | /// :rtype: None | COMMENT |
| LOW | apis/python/node/src/lib.rs | 1021 | /// :param message: The log message | COMMENT |
| LOW | apis/python/node/src/lib.rs | 1081 | } | COMMENT |
| LOW | apis/python/node/src/lib.rs | 1161 | EventsInner::Merged(Box::new(futures::stream::empty())), | COMMENT |
| LOW | apis/python/node/src/lib.rs | 1181 | /// The writer must not begin a new [`write_memory_pool`] while a receiver is | COMMENT |
| LOW | apis/python/node/src/lib.rs | 1441 | /// | COMMENT |
| LOW | apis/python/node/src/lib.rs | 1801 | /// | COMMENT |
| LOW | apis/python/node/src/lib.rs | 2221 | /// generation re-check detects if a write occurred mid-read. Header | COMMENT |
| LOW | apis/python/node/src/sample_handler.rs | 1 | //! Zero-copy send via Python's buffer protocol. | COMMENT |
| LOW | apis/python/node/src/sample_handler.rs | 21 | //! any `memoryview` derived from it) keep the underlying allocation alive even | COMMENT |
| LOW | apis/python/node/src/sample_handler.rs | 61 | COMMENT | |
| LOW | apis/python/node/src/sample_handler.rs | 101 | // --------------------------------------------------------------------------- | COMMENT |
| LOW | apis/python/node/src/sample_handler.rs | 121 | /// mv = memoryview(buf) # writable memoryview | COMMENT |
| LOW | apis/python/node/src/sample_handler.rs | 141 | // by default, but it is safe to share across threads in our specific usage: | COMMENT |
| LOW | apis/python/node/src/sample_handler.rs | 161 | #[cfg(Py_3_11)] | COMMENT |
| LOW | apis/python/node/src/sample_handler.rs | 241 | COMMENT | |
| LOW | apis/python/node/src/sample_handler.rs | 261 | COMMENT | |
| LOW | apis/python/node/src/sample_handler.rs | 281 | /// memoryview(buf)[:] = my_bytes # or: numpy / struct / ... | COMMENT |
| LOW | apis/python/node/src/sample_handler.rs | 421 | } | COMMENT |
| LOW | apis/python/node/src/sample_handler.rs | 481 | }, | COMMENT |
| LOW | apis/python/node/src/sample_handler.rs | 501 | /// np.asarray(mv, dtype=np.uint8)[:] = data | COMMENT |
| LOW | apis/python/node/src/sample_handler.rs | 521 | /// buffer-protocol consumer (numpy, struct, memoryview, etc.) acquired | COMMENT |
| LOW | apis/python/node/src/sample_handler.rs | 541 | /// - **Normal exit** (`exc_type is None`): call `send()`. If any | COMMENT |
| LOW | apis/python/operator/build.rs | 1 | fn main() { | COMMENT |
| LOW | apis/rust/node/tests/copy_count.rs | 1 | //! Copy-count harness for the send-side encoders (plan W0-D). | COMMENT |
| LOW | apis/rust/node/tests/copy_count.rs | 81 | } | COMMENT |
| LOW | apis/rust/node/tests/zenoh_schema_cache.rs | 1 | //! Late-join validation for the schema-cache subtopic (the W3 design): a | COMMENT |
| LOW | apis/rust/node/benches/arrow_framing.rs | 1 | //! Encode/decode benchmarks for Dora's Arrow IPC framing. | COMMENT |
| LOW | apis/rust/node/src/error.rs | 1 | use thiserror::Error; | COMMENT |
| LOW | apis/rust/node/src/error.rs | 21 | } | COMMENT |
| LOW | apis/rust/node/src/error.rs | 41 | /// instance (dora-rs/adora#148). | COMMENT |
| LOW | apis/rust/node/src/lib.rs | 1 | //! This crate enables you to create nodes for the [Dora] dataflow framework. | COMMENT |
| LOW | apis/rust/node/src/lib.rs | 21 | //! | COMMENT |
| LOW | apis/rust/node/src/lib.rs | 41 | //! The [`EventStream`] is an [`AsyncIterator`][std::async_iter::AsyncIterator] that yields the incoming [`Event`]s. | COMMENT |
| LOW | apis/rust/node/src/lib.rs | 61 | //! <div class="warning"> | COMMENT |
| LOW | apis/rust/node/src/integration_testing.rs | 1 | #![allow(clippy::test_attr_in_doctest)] | COMMENT |
| 460 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | guide/translate.py | 147 | # ============================================= | COMMENT |
| MEDIUM⚡ | guide/translate.py | 149 | # ============================================= | COMMENT |
| MEDIUM⚡ | guide/translate.py | 638 | # ============================================= | COMMENT |
| MEDIUM⚡ | guide/translate.py | 640 | # ============================================= | COMMENT |
| MEDIUM⚡ | guide/translate.py | 648 | # ============================================= | COMMENT |
| MEDIUM⚡ | guide/translate.py | 650 | # ============================================= | COMMENT |
| MEDIUM⚡ | guide/translate.py | 657 | # ============================================= | COMMENT |
| MEDIUM⚡ | guide/translate.py | 659 | # ============================================= | COMMENT |
| MEDIUM⚡ | guide/translate.py | 695 | # ============================================= | COMMENT |
| MEDIUM⚡ | guide/translate.py | 697 | # ============================================= | COMMENT |
| MEDIUM⚡ | guide/translate.py | 707 | # ============================================= | COMMENT |
| MEDIUM⚡ | guide/translate.py | 709 | # ============================================= | COMMENT |
| MEDIUM⚡ | guide/translate.py | 718 | # ============================================= | COMMENT |
| MEDIUM⚡ | guide/translate.py | 720 | # ============================================= | COMMENT |
| MEDIUM | guide/translate.py | 177 | # ============================================= | COMMENT |
| MEDIUM | guide/translate.py | 179 | # ============================================= | COMMENT |
| MEDIUM | guide/translate.py | 236 | # ============================================= | COMMENT |
| MEDIUM | guide/translate.py | 238 | # ============================================= | COMMENT |
| MEDIUM | guide/translate.py | 260 | # ============================================= | COMMENT |
| MEDIUM | guide/translate.py | 262 | # ============================================= | COMMENT |
| MEDIUM | guide/translate.py | 328 | # ============================================= | COMMENT |
| MEDIUM | guide/translate.py | 330 | # ============================================= | COMMENT |
| MEDIUM | guide/translate.py | 363 | # ============================================= | COMMENT |
| MEDIUM | guide/translate.py | 365 | # ============================================= | COMMENT |
| MEDIUM | guide/translate.py | 384 | # ============================================= | COMMENT |
| MEDIUM | guide/translate.py | 386 | # ============================================= | COMMENT |
| MEDIUM | guide/translate.py | 426 | # ============================================= | COMMENT |
| MEDIUM | guide/translate.py | 428 | # ============================================= | COMMENT |
| MEDIUM | guide/translate.py | 462 | # ============================================= | COMMENT |
| MEDIUM | guide/translate.py | 464 | # ============================================= | COMMENT |
| MEDIUM | guide/translate.py | 548 | # ============================================= | COMMENT |
| MEDIUM | guide/translate.py | 550 | # ============================================= | COMMENT |
| MEDIUM | guide/translate.py | 571 | # ============================================= | COMMENT |
| MEDIUM | guide/translate.py | 573 | # ============================================= | COMMENT |
| MEDIUM | guide/translate.py | 593 | # ============================================= | COMMENT |
| MEDIUM | guide/translate.py | 595 | # ============================================= | COMMENT |
| MEDIUM | guide/translate.py | 607 | # ============================================= | COMMENT |
| MEDIUM | guide/translate.py | 609 | # ============================================= | COMMENT |
| MEDIUM | guide/translate.py | 622 | # ============================================= | COMMENT |
| MEDIUM | guide/translate.py | 624 | # ============================================= | COMMENT |
| MEDIUM | guide/translate.py | 675 | # ============================================= | COMMENT |
| MEDIUM | guide/translate.py | 677 | # ============================================= | COMMENT |
| MEDIUM | apis/python/node/dora/cuda.py | 22 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | apis/python/node/dora/cuda.py | 24 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | apis/python/node/dora/cuda.py | 191 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | apis/python/node/dora/cuda.py | 193 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | apis/python/node/dora/cuda.py | 337 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | apis/python/node/dora/cuda.py | 339 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | libraries/core/src/inference.rs | 180 | // ── primary fix: 3-argument real API ──────────────────────────────────── | COMMENT |
| MEDIUM | libraries/core/src/inference.rs | 238 | // ── into_arrow() chain: type visible in the constructor ───────────────── | COMMENT |
| MEDIUM | libraries/core/src/inference.rs | 256 | // ── new type mappings ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | libraries/core/src/inference.rs | 294 | // ── unchanged behaviour ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | libraries/core/src/inference.rs | 330 | // ── two-arg call (old fictional form) should NOT fire ─────────────────── | COMMENT |
| MEDIUM | docs/plan-agentic-qa-strategy.md | 1205 | # ============================================================ | COMMENT |
| MEDIUM | docs/plan-agentic-qa-strategy.md | 1207 | # ============================================================ | COMMENT |
| MEDIUM | docs/plan-agentic-qa-strategy.md | 1302 | # ============================================================ | COMMENT |
| MEDIUM | docs/plan-agentic-qa-strategy.md | 1304 | # ============================================================ | COMMENT |
| MEDIUM | examples/python-yolo-detection/dataflow_multi.yml | 2 | # ── Camera 0 ────────────────────────────────────── | COMMENT |
| MEDIUM | examples/python-yolo-detection/dataflow_multi.yml | 29 | # ── Camera 1 ────────────────────────────────────── | COMMENT |
| MEDIUM | examples/ros2-bridge/yaml-bridge/dataflow.yml | 2 | # ============================================= | COMMENT |
| 86 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | guide/src/hub/publishing.md | 104 | dora hub init # scaffold dora-node.yml (if you haven't) | CODE |
| MEDIUM | tests/example-smoke.rs | 1977 | // `docs/agentic-qa-policy.md` and the capability matrix in | COMMENT |
| MEDIUM | libraries/extensions/mavlink2-bridge/src/lib.rs | 3 | //! This crate is the scaffold for a MAVLink 2 bridge that mirrors the | COMMENT |
| MEDIUM | docs/plan-dora-1.0-consolidation.md | 598 | ### D-5: agentic engineering disclosure in the release | COMMENT |
| MEDIUM | docs/cli.md | 1111 | dora hub init [PATH] # scaffold a dora-node.yml manifest | CODE |
| MEDIUM | docs/plan-agentic-qa-strategy.md | 923 | ## 10. Long-term: agentic-engineering-maintained repo | COMMENT |
| MEDIUM | docs/plan-agentic-qa-strategy.md | 995 | ### 10.5 Measuring agentic quality over time | COMMENT |
| MEDIUM | docs/plan-agentic-qa-strategy.md | 1052 | **Four of six findings (#3, #4, #5, #6) would have been missed by every gate that existed in dora prior to this POC.** T | CODE |
| MEDIUM | docs/plan-agentic-qa-strategy.md | 1155 | ### 11.4 Long-term agentic quality | COMMENT |
| MEDIUM | docs/octos-dora-integration-report.md | 11 | [Octos](https://github.com/octos-org/octos) (Open Cognitive Tasks Orchestration System) is a Rust-native agentic OS that | CODE |
| MEDIUM | docs/plan-node-hub.md | 678 | dora hub init [--manifest-only] # scaffold dora-node.yml | CODE |
| MEDIUM | .cargo/mutants.toml | 3 | # See docs/plan-agentic-qa-strategy.md for the mutation testing strategy. | COMMENT |
| MEDIUM | binaries/cli/src/command/hub/init.rs | 1 | //! `dora hub init` — scaffold a `dora-node.yml` next to the node's native | COMMENT |
| MEDIUM | binaries/cli/src/command/hub/init.rs | 28 | /// Render a scaffold and guarantee it satisfies the manifest validator. | COMMENT |
| MEDIUM | binaries/cli/src/command/hub/init.rs | 135 | /// Where the defaults came from, mentioned in the scaffold comments. | COMMENT |
| MEDIUM | binaries/cli/src/command/hub/init.rs | 312 | // scaffold at `parse()` before the validate-fixpoint can recover. | COMMENT |
| MEDIUM | binaries/cli/src/command/hub/init.rs | 407 | // chars in its description; the scaffold must stay parseable rather | COMMENT |
| MEDIUM | scripts/qa/all.sh | 4 | # Runs the QA gates from docs/plan-agentic-qa-strategy.md. | COMMENT |
| MEDIUM | scripts/qa/all.sh | 294 | # Tier 2 locally. See docs/plan-agentic-qa-strategy.md §6. | COMMENT |
| MEDIUM | scripts/qa/ci-nightly-jobs.sh | 489 | # Shared scaffolding: bring up a loopback SSH cluster | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …emplate/python/__node-name__/__node_name__/__init__.py | 5 | # Define the path to the README file relative to the package directory | COMMENT |
| MEDIUM | examples/python-dataflow-builder/simple_example.py | 11 | # Define the nodes | COMMENT |
| MEDIUM⚡ | examples/ros2-bridge/python/turtle/random_turtle.py | 9 | # Create a ROS2 Context | COMMENT |
| MEDIUM⚡ | examples/ros2-bridge/python/turtle/random_turtle.py | 17 | # Define a ROS2 QOS | COMMENT |
| MEDIUM⚡ | examples/ros2-bridge/python/turtle/random_turtle.py | 20 | # Create a publisher to cmd_vel topic | COMMENT |
| MEDIUM⚡ | examples/ros2-bridge/python/turtle/random_turtle.py | 26 | # Create a listener to pose topic | COMMENT |
| MEDIUM⚡ | examples/ros2-bridge/python/turtle/random_turtle.py | 30 | # Create a dora node | COMMENT |
| MEDIUM | …s2-bridge/python/service-server/service_server_node.py | 12 | # Create a ROS2 context + node and advertise the service. | COMMENT |
| MEDIUM | …s2-bridge/python/service-client/service_client_node.py | 12 | # Create a ROS2 context + node. | COMMENT |
| MEDIUM | …s2-bridge/python/service-client/service_client_node.py | 23 | # Create the service client for /add_two_ints. This waits (bounded) for the | COMMENT |
| MEDIUM | examples/python-dataflow/sender.py | 25 | # Create a simple Apache Arrow array with the message number. | COMMENT |
| MEDIUM | examples/python-dataflow/transformer.py | 18 | # Create a struct array with multiple fields | COMMENT |
| MEDIUM | examples/cuda-benchmark/sender.py | 23 | # Create a random number generator | COMMENT |
| MEDIUM | examples/cuda-benchmark/demo_sender.py | 24 | # Create a random number generator | COMMENT |
| MEDIUM | examples/cuda-benchmark/demo_sender.py | 58 | # Create a random number generator | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | CLAUDE.md | 110 | ### Step 1: Run /review | COMMENT |
| LOW⚡ | CLAUDE.md | 114 | ### Step 2: Run /simplify | COMMENT |
| LOW⚡ | CLAUDE.md | 118 | ### Step 3: Local CI (fmt + clippy + tests) | COMMENT |
| LOW | docs/plan-event-loop-separation.md | 48 | ## Step 1: Zenoh Publish Channel (highest impact) | COMMENT |
| LOW | docs/plan-event-loop-separation.md | 97 | ## Step 2: Fire-and-Forget Metrics (removes 50ms spikes) | COMMENT |
| LOW | docs/plan-event-loop-separation.md | 125 | ## Step 3: Background Heartbeat (optional, minor) | COMMENT |
| LOW | binaries/coordinator/src/lib.rs | 7305 | // Step 1: build a synthesized DataflowDaemonResult as the watchdog | COMMENT |
| LOW | binaries/coordinator/src/lib.rs | 7332 | // Step 2: late `result` from a daemon that DID end up running | COMMENT |
| LOW | binaries/coordinator/src/lib.rs | 7349 | // Step 3: apply the merge logic from the Vacant arm. | COMMENT |
| LOW | binaries/daemon/src/lib.rs | 6544 | // Step 1: Simulate timeout — insert into broken_inputs then break | COMMENT |
| LOW | binaries/daemon/src/lib.rs | 6563 | // Step 2: Upstream sends data again — recovery | COMMENT |
| LOW | examples/dynamic-agent-tools/README.md | 35 | ### Step 1: Start with echo tool only | COMMENT |
| LOW | examples/dynamic-agent-tools/README.md | 46 | ### Step 2: Add calculator tool | COMMENT |
| LOW | examples/dynamic-agent-tools/README.md | 61 | ### Step 3: Remove calculator tool | COMMENT |
| LOW | examples/dynamic-agent-tools/README.md | 69 | ### Step 4: Clean up | COMMENT |
| LOW⚡ | examples/dynamic-add-remove/README.md | 29 | ### Step 1: Start the base dataflow | COMMENT |
| LOW⚡ | examples/dynamic-add-remove/README.md | 39 | ### Step 2: Add a filter node | COMMENT |
| LOW⚡ | examples/dynamic-add-remove/README.md | 47 | ### Step 3: Wire the filter into the pipeline | COMMENT |
| LOW | examples/dynamic-add-remove/README.md | 61 | ### Step 4: Remove the filter | COMMENT |
| LOW | examples/dynamic-add-remove/README.md | 70 | ### Step 5: Clean up | COMMENT |
| LOW⚡ | examples/dynamic-add-remove/dataflow.yml | 7 | # Step 1: Start the base dataflow | COMMENT |
| LOW⚡ | examples/dynamic-add-remove/dataflow.yml | 11 | # Step 2: Add a filter node dynamically | COMMENT |
| LOW⚡ | examples/dynamic-add-remove/dataflow.yml | 14 | # Step 3: Wire the filter into the pipeline | COMMENT |
| LOW⚡ | examples/dynamic-add-remove/dataflow.yml | 18 | # Step 4: Remove the filter | COMMENT |
| LOW⚡ | examples/dynamic-add-remove/dataflow.yml | 21 | # Step 5: Stop | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | apis/python/node/generate_stubs.py | 478 | def concatenated_path_to_type( | CODE |
| LOW | apis/python/node/tests/test_dora_compat.py | 8 | def test_from_dora_import_node(): | CODE |
| LOW | apis/python/node/tests/test_dora_compat.py | 15 | def test_from_dora_import_dora_status(): | CODE |
| LOW⚡ | apis/python/node/tests/test_dora_compat.py | 27 | def test_dora_status_is_dora_status(): | CODE |
| LOW⚡ | apis/python/node/tests/test_dora_compat.py | 35 | def test_from_dora_import_node_and_status(): | CODE |
| LOW⚡ | apis/python/node/tests/test_dora_compat.py | 43 | def test_dora_node_same_as_dora_node(): | CODE |
| LOW | apis/python/node/tests/test_dora_compat.py | 66 | def test_dora_build_and_run_importable(): | CODE |
| LOW⚡ | apis/python/node/tests/test_builder.py | 34 | def test_node_with_input_string_source(): | CODE |
| LOW⚡ | apis/python/node/tests/test_builder.py | 42 | def test_node_with_input_output_object(): | CODE |
| LOW⚡ | apis/python/node/tests/test_builder.py | 51 | def test_node_with_queue_options(): | CODE |
| LOW | apis/python/node/tests/test_builder.py | 64 | def test_invalid_queue_policy(): | CODE |
| LOW | apis/python/node/tests/test_builder.py | 109 | def test_duplicate_output_not_added_twice(): | CODE |
| LOW | apis/python/node/tests/test_mock_node.py | 10 | def test_mock_node_iterates_inputs_then_stop(): | CODE |
| LOW⚡ | apis/python/node/tests/test_mock_node.py | 22 | def test_mock_node_captures_outputs(): | CODE |
| LOW⚡ | apis/python/node/tests/test_mock_node.py | 32 | def test_mock_node_multiple_outputs(): | CODE |
| LOW⚡ | apis/python/node/tests/test_mock_node.py | 40 | def test_mock_node_empty_inputs(): | CODE |
| LOW⚡ | apis/python/node/tests/test_mock_node.py | 47 | def test_mock_node_next_method(): | CODE |
| LOW | apis/python/node/tests/test_mock_node.py | 66 | def test_mock_node_metadata_not_shared(): | CODE |
| LOW | apis/python/node/tests/test_mock_node.py | 77 | def test_mock_node_recv_async(): | CODE |
| LOW | apis/python/node/tests/test_mock_node.py | 90 | def test_mock_node_recv_async_loop(): | CODE |
| LOW | apis/python/node/tests/test_mock_node.py | 106 | def test_mock_node_send_output_in_async_context(): | CODE |
| LOW | …plate/python/__node-name__/tests/test___node_name__.py | 19 | def test_node_logic_with_mock(): | CODE |
| LOW | examples/python-zero-copy-send/test_contract.py | 33 | def case_happy_path_context_manager(node): | CODE |
| LOW | examples/python-zero-copy-send/test_contract.py | 51 | def case_send_while_view_open_errors(node): | CODE |
| LOW | examples/python-zero-copy-send/test_contract.py | 69 | def case_view_after_send_raises_buffer_error(node): | CODE |
| LOW⚡ | examples/python-zero-copy-send/test_contract.py | 100 | def case_as_buffer_is_idempotent(node): | CODE |
| LOW⚡ | examples/python-zero-copy-send/test_contract.py | 110 | def case_as_memoryview_returns_fresh_view(node): | CODE |
| LOW | examples/python-zero-copy-send/test_contract.py | 139 | def case_send_refused_when_numpy_view_outlives_context(node): | CODE |
| LOW | examples/python-zero-copy-send/test_contract.py | 181 | def case_access_after_send_raises_runtime_error(node): | CODE |
| LOW | examples/python-zero-copy-send/test_contract.py | 193 | def case_buffer_outlives_dropped_handler_safely(node): | CODE |
| LOW | examples/python-zero-copy-send/test_contract.py | 219 | def case_exit_with_exception_does_not_send(node): | CODE |
| LOW | examples/mavlink2-bridge-sitl-mission/mission_rover.py | 135 | def _wait_for_first_heartbeat(self, timeout: float) -> None: | CODE |
| LOW | examples/mavlink2-bridge-sitl-mission/mission_long.py | 376 | def _wait_for_first_heartbeat(self, timeout: float) -> None: | CODE |
| LOW | examples/mavlink2-bridge-sitl-mission/mission.py | 224 | def _wait_for_first_heartbeat(self, timeout: float) -> None: | CODE |
| LOW | examples/python-operator-dataflow/llm_op.py | 68 | def extract_python_code_blocks(text): | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | guide/translate.py | 144 | """Build comprehensive translation dictionary.""" | STRING |
| MEDIUM | apis/rust/node/src/node/arrow_utils.rs | 106 | /// receive path robust while preserving zero-copy for the common SHM case. | COMMENT |
| MEDIUM | tests/fault_tolerance/delayed_crash_node/Cargo.toml | 13 | # harness can count how many times the daemon re-spawned it. Paired with | COMMENT |
| MEDIUM | examples/mavlink2-bridge/telemetry_printer.py | 16 | # The networked smoke harness has a 30 s budget and only signals STOP | COMMENT |
| MEDIUM | examples/mavlink2-bridge/telemetry_printer.py | 18 | # dataflow into Failed state before the harness times out. | COMMENT |
| MEDIUM | examples/rust-dynamic-add-remove/dataflow.yml | 7 | # torn down) so the lifecycle harness has time to exercise add / | COMMENT |
| MEDIUM | examples/rust-dynamic-add-remove/dataflow.yml | 41 | # lifecycle harness would lose visibility on the dataflow as soon | COMMENT |
| MEDIUM | examples/cxx-dynamic-add-remove/dataflow.yml | 18 | # before the harness can complete the lifecycle. | COMMENT |
| MEDIUM | scripts/ros2dev.sh | 2 | # ROS2-bridge dev harness for macOS — issue #1170, Phase 0. | COMMENT |
| MEDIUM | scripts/qa/kani.sh | 6 | # Unlike tests, a passing proof covers *every* input in the harness's | COMMENT |
| MEDIUM | scripts/qa/kani.sh | 43 | # `#[kani::proof]` harness anywhere in the workspace is enough — a stale | COMMENT |
| MEDIUM | .github/workflows/nightly.yml | 157 | # reliable here (unlike the example-smoke harness), so no tee/fail dance. | COMMENT |
| MEDIUM | .github/workflows/nightly.yml | 1074 | # every input in the harness state space, not just sampled values. | COMMENT |
| MEDIUM | .github/workflows/nightly.yml | 1077 | # it a refactor could break a harness unnoticed until the next manual | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/plan-dora-1.0-consolidation.md | 1201 | ### 19.6 AI-generated code QA rules (issue #207) | COMMENT |
| HIGH | docs/plan-agentic-qa-strategy.md | 10 | ## 1. Why AI-generated code needs different verification | COMMENT |
| HIGH | docs/qa-poc-report-2026-04-09.md | 35 | ### 2.2 What AI-generated code fails at | COMMENT |
| HIGH | binaries/daemon/src/lib.rs | 4523 | // dataflow shut down exactly as requested | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | apis/python/node/dora/__init__.py | 13 | CODE | |
| LOW | apis/python/node/dora/__init__.py | 14 | CODE | |
| LOW | apis/python/node/dora/__init__.py | 14 | CODE | |
| LOW | apis/python/node/dora/__init__.py | 14 | CODE | |
| LOW | apis/python/node/dora/__init__.py | 14 | CODE | |
| LOW | apis/python/node/dora/__init__.py | 14 | CODE | |
| LOW | apis/python/node/dora/__init__.py | 14 | CODE | |
| LOW | apis/python/node/dora/__init__.py | 14 | CODE | |
| LOW | apis/python/node/dora/__init__.py | 14 | CODE | |
| LOW | apis/python/node/dora/__init__.py | 14 | CODE | |
| LOW | apis/python/node/dora/__init__.py | 14 | CODE | |
| LOW | apis/python/node/dora/__init__.py | 14 | CODE | |
| LOW | apis/python/node/dora/__init__.py | 14 | CODE | |
| LOW | apis/python/node/dora/__init__.py | 33 | CODE | |
| LOW | apis/python/node/dora/builder.py | 1 | CODE | |
| LOW | apis/python/node/dora/testing.py | 19 | CODE | |
| LOW | apis/python/node/dora/testing.py | 23 | CODE | |
| LOW | examples/dynamic-agent-tools/agent.py | 9 | CODE | |
| LOW | examples/streaming-example/generator.py | 12 | CODE | |
| LOW | examples/python-logging/processor.py | 13 | CODE | |
| LOW | examples/python-dataflow-builder/test_builder_api.py | 27 | CODE | |
| LOW | examples/ros2-comparison/ros2_receiver.py | 9 | CODE | |
| LOW | examples/ros2-comparison/ros2_receiver.py | 11 | CODE | |
| LOW | examples/mavlink2-bridge-sitl-mission/mission_rover.py | 37 | CODE | |
| LOW | examples/mavlink2-bridge-sitl-mission/mission_long.py | 33 | CODE | |
| LOW | examples/mavlink2-bridge-sitl-mission/mission.py | 20 | CODE | |
| LOW | examples/python-parquet-recorder/recorder.py | 12 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | guide/translate.py | 12 | CODE | |
| LOW | guide/translate.py | 65 | CODE | |
| LOW | guide/translate.py | 111 | CODE | |
| LOW | apis/python/node/generate_stubs.py | 71 | CODE | |
| LOW | apis/python/node/generate_stubs.py | 104 | CODE | |
| LOW | apis/python/node/generate_stubs.py | 264 | CODE | |
| LOW | …rc/template/python/__node-name__/__node_name__/main.py | 7 | CODE | |
| LOW | examples/dynamic-agent-tools/calc_tool.py | 13 | CODE | |
| LOW | examples/dynamic-agent-tools/agent.py | 23 | CODE | |
| LOW | examples/dynamic-agent-tools/echo_tool.py | 10 | CODE | |
| LOW | examples/streaming-example/sink.py | 12 | CODE | |
| LOW | examples/streaming-example/generator.py | 29 | CODE | |
| LOW | examples/python-logging/monitor.py | 14 | CODE | |
| LOW | examples/python-yolo-detection/plot.py | 19 | CODE | |
| LOW | examples/python-yolo-detection/webcam.py | 20 | CODE | |
| LOW | examples/mavlink2-bridge-sitl-mission/mission_rover.py | 148 | CODE | |
| LOW | examples/mavlink2-bridge-sitl-mission/mission_long.py | 439 | CODE | |
| LOW | examples/dynamic-add-remove/sender.py | 9 | CODE | |
| LOW | examples/python-dataflow/receiver.py | 8 | CODE | |
| LOW | examples/typed-dataflow/processor.py | 9 | CODE | |
| LOW | examples/python-parquet-recorder/camera.py | 18 | CODE | |
| LOW | examples/python-operator-dataflow/plot.py | 27 | CODE | |
| LOW | …s/python-operator-dataflow/sentence_transformers_op.py | 19 | CODE | |
| LOW | examples/python-operator-dataflow/llm_op.py | 192 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | binaries/coordinator/src/lib.rs | 7305 | // Step 1: build a synthesized DataflowDaemonResult as the watchdog | COMMENT |
| LOW | binaries/coordinator/src/lib.rs | 7332 | // Step 2: late `result` from a daemon that DID end up running | COMMENT |
| LOW | binaries/coordinator/src/lib.rs | 7349 | // Step 3: apply the merge logic from the Vacant arm. | COMMENT |
| LOW | binaries/daemon/src/lib.rs | 6544 | // Step 1: Simulate timeout — insert into broken_inputs then break | COMMENT |
| LOW | binaries/daemon/src/lib.rs | 6563 | // Step 2: Upstream sends data again — recovery | COMMENT |
| LOW⚡ | examples/dynamic-add-remove/dataflow.yml | 7 | # Step 1: Start the base dataflow | COMMENT |
| LOW⚡ | examples/dynamic-add-remove/dataflow.yml | 11 | # Step 2: Add a filter node dynamically | COMMENT |
| LOW⚡ | examples/dynamic-add-remove/dataflow.yml | 14 | # Step 3: Wire the filter into the pipeline | COMMENT |
| LOW⚡ | examples/dynamic-add-remove/dataflow.yml | 18 | # Step 4: Remove the filter | COMMENT |
| LOW⚡ | examples/dynamic-add-remove/dataflow.yml | 21 | # Step 5: Stop | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/memory-pool/receiver.py | 62 | except Exception: | CODE |
| LOW⚡ | examples/python-zero-copy-send/test_contract.py | 91 | except Exception as exc: | CODE |
| LOW | examples/python-zero-copy-send/test_contract.py | 285 | except Exception: | CODE |
| LOW | examples/mavlink2-bridge-sitl-mission/mission_rover.py | 49 | except Exception: # pragma: no cover | CODE |
| LOW | examples/mavlink2-bridge-sitl-mission/mission_rover.py | 166 | except Exception: | CODE |
| LOW | examples/mavlink2-bridge-sitl-mission/mission_long.py | 46 | except Exception: # pragma: no cover | CODE |
| LOW | examples/mavlink2-bridge-sitl-mission/mission_long.py | 253 | except Exception: | CODE |
| LOW | …mavlink2-bridge-sitl-mission/scripts/forward_to_qgc.py | 49 | except Exception as e: | CODE |
| LOW | examples/python-drain/receive_data.py | 14 | except Exception as e: | CODE |
| MEDIUM | examples/python-drain/receive_data.py | 15 | print("Error receiving event:", e) | CODE |
| LOW | scripts/smoke-all.sh | 543 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/benchmark/compare.sh | 9 | # Usage: | COMMENT |
| LOW | …les/ros2-bridge/yaml-bridge-action-server/dataflow.yml | 13 | # Usage: | COMMENT |
| LOW | examples/ros2-bridge/yaml-bridge-action/dataflow.yml | 17 | # Usage: | COMMENT |
| LOW | …es/ros2-bridge/yaml-bridge-service/dataflow-client.yml | 13 | # Usage: | COMMENT |
| LOW | …es/ros2-bridge/yaml-bridge-service/dataflow-server.yml | 13 | # Usage: | COMMENT |
| LOW | examples/ros2-comparison/run_comparison.sh | 10 | # Usage: | COMMENT |
| LOW | scripts/smoke-all.sh | 16 | # Usage: | COMMENT |
| LOW | scripts/qa/adversarial.sh | 15 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | guide/translate.py | 117 | # Check if text contains newlines | COMMENT |
| LOW | examples/python-operator-dataflow/llm_op.py | 133 | if lines: # Check if there are any lines to remove | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | apis/python/node/dora/testing.py | 25 | __all__ = ["MockNode"] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | libraries/extensions/ros2-bridge/msg-gen/src/lib.rs | 660 | let bytes = OsString::from("placeholder"); | CODE |