Apache Iggy: Hyper-Efficient Message Streaming at Laser Speed
This report summarizes scanner evidence for apache/iggy, a Rust project with 5,065 GitHub stars. SynthScan examined 858,433 lines of code across 3511 source files, recording 6222 pattern matches distributed across 20 syntactic categories. The legacy adjusted pattern signal is 8.1 (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? 5849 finding(s).
Are imports declared and package/API names verified? 52 finding(s).
Are wrappers, guards, and repeated structures necessary? 828 finding(s).
Which changes need focused human review? 6222 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 6222 distinct pattern matches across 20 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 | .asf.yaml | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | Cargo.toml | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | codecov.yml | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | .pre-commit-config.yaml | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | about.toml | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | about.toml | 21 | # LICENSE-binary manifest that is bundled into convenience binary | COMMENT |
| LOW | about.toml | 41 | # BSD-derived. Pulled in by libbz2-rs-sys (runtime). Allowed in | COMMENT |
| LOW | cliff.toml | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | licenserc.toml | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | docker-compose.yml | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | .typos.toml | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | rust-toolchain.toml | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | .taplo.toml | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | .markdownlint.yml | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | .config/nextest.toml | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | .config/nextest.toml | 41 | COMMENT | |
| LOW | .config/rail.toml | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | core/journal/Cargo.toml | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | core/journal/src/partition_journal.rs | 1 | // Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | core/journal/src/partition_journal.rs | 41 | pub const PARTITION_WAL_BLOCK_SIZE: usize = 4096; | COMMENT |
| LOW | core/journal/src/partition_journal.rs | 61 | /// layout reads back as sequence zero. | COMMENT |
| LOW | core/journal/src/partition_journal.rs | 381 | .await?; | COMMENT |
| LOW | core/journal/src/partition_journal.rs | 721 | pub async fn append_buffered(&mut self, prepare: Frozen<4096>) -> io::Result<()> { | COMMENT |
| LOW | core/journal/src/partition_journal.rs | 1301 | /// Both slots exist and hold a complete record from the moment the journal | COMMENT |
| LOW | core/journal/src/superblock.rs | 1 | // Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | core/journal/src/superblock.rs | 21 | //! (`view`, `log_view`, `commit`). The payload is opaque here: this layer | COMMENT |
| LOW | core/journal/src/superblock.rs | 61 | const SUPERBLOCK_MAGIC: u32 = 0x5342_4C4B; | COMMENT |
| LOW | core/journal/src/superblock.rs | 101 | /// The two ping-pong slot file names under a superblock directory. | COMMENT |
| LOW | core/journal/src/superblock.rs | 121 | /// copy, or one clean record beside a copy that does not verify, whose lost | COMMENT |
| LOW | core/journal/src/superblock.rs | 181 | /// Set at `open` when a slot held bytes that do not verify, which `write` then | COMMENT |
| LOW | core/journal/src/superblock.rs | 261 | io::ErrorKind::InvalidData, | COMMENT |
| LOW | core/journal/src/superblock.rs | 361 | /// `None` for a missing slot. Shares the classification and selection rules with | COMMENT |
| LOW | core/journal/src/superblock.rs | 441 | /// Two valid records: higher `sequence` wins. One valid record beside an absent | COMMENT |
| LOW | core/journal/src/lib.rs | 1 | // Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | core/journal/src/lib.rs | 41 | fn previous_header(&self, header: &Self::Header) -> Option<Self::HeaderRef<'_>>; | COMMENT |
| LOW | core/journal/src/lib.rs | 61 | /// cannot serve. | COMMENT |
| LOW | core/journal/src/lib.rs | 81 | &self, | COMMENT |
| LOW | core/journal/src/durable_storage.rs | 1 | // Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | core/journal/src/durable_storage.rs | 61 | /// survival across a crash. File sync makes file contents durable; directory | COMMENT |
| LOW | core/journal/src/durable_storage.rs | 81 | /// # Errors | COMMENT |
| LOW | core/journal/src/durable_storage.rs | 101 | fn exists_following_links(&self, path: &Path) -> impl Future<Output = io::Result<bool>> { | COMMENT |
| LOW | core/journal/src/local_gate.rs | 1 | // Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | core/journal/src/local_gate.rs | 21 | //! loop, detached per-client tasks, repair drivers). This gate serializes them | COMMENT |
| LOW | core/journal/src/file_storage.rs | 1 | // Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | core/journal/src/file_storage.rs | 61 | } | COMMENT |
| LOW | core/journal/src/file_storage.rs | 101 | /// Reserves the region by advancing `write_offset` **synchronously, | COMMENT |
| LOW | core/journal/src/prepare_journal.rs | 1 | // Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | core/journal/src/prepare_journal.rs | 41 | /// multi-GiB allocation during the WAL scan. | COMMENT |
| LOW | core/journal/src/prepare_journal.rs | 61 | /// Must be larger than the maximum number of entries between consecutive | COMMENT |
| LOW | core/journal/src/prepare_journal.rs | 121 | COMMENT | |
| LOW | core/journal/src/prepare_journal.rs | 141 | /// are safe to evict from the slot array. Appending an entry that would evict | COMMENT |
| LOW | core/journal/src/prepare_journal.rs | 161 | /// serializes checkpoints anyway (metadata `journal_gate`); this is | COMMENT |
| LOW | core/journal/src/prepare_journal.rs | 201 | /// | COMMENT |
| LOW | core/journal/src/prepare_journal.rs | 481 | const DRAIN: Self = Self { | COMMENT |
| LOW | core/journal/src/prepare_journal.rs | 501 | /// Returns `JournalError::Io` if the WAL file cannot be opened or read. | COMMENT |
| LOW | core/journal/src/prepare_journal.rs | 961 | /// below the head snapshotted, letting `append` evict live entries repair cannot | COMMENT |
| LOW | core/journal/src/prepare_journal.rs | 1221 | // torn tail. That classification is only sound because this WAL | COMMENT |
| LOW | core/journal/src/partition_journal/segments.rs | 1 | // Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | core/message_bus/Cargo.toml | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | core/message_bus/tests/replica_tls_mitm.rs | 1 | // Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| 5119 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | core/connectors/sinks/bigquery_sink/tests/common/mod.rs | 226 | // ─── gRPC service ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/bigquery_sink/src/encode.rs | 267 | // ─── Mapped mode ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/bigquery_sink/src/encode.rs | 1021 | // ─── Raw mode ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/bigquery_sink/src/encode.rs | 1105 | // ─── Metadata ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/bigquery_sink/src/encode.rs | 1192 | // ─── Request sizing ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/bigquery_sink/src/encode.rs | 1389 | // ─── Helpers ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/bigquery_sink/src/schema.rs | 423 | // ─── REST representation ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/influxdb_sink/src/lib.rs | 54 | // ── Configuration ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/influxdb_sink/src/lib.rs | 342 | // ── Sink struct ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/influxdb_sink/src/lib.rs | 377 | // ── PayloadFormat ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/influxdb_sink/src/lib.rs | 406 | // ── InfluxDbSink impl ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/influxdb_sink/src/lib.rs | 704 | // ── Sink trait ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/influxdb_sink/src/lib.rs | 868 | // ── Tests ───────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/influxdb_sink/src/lib.rs | 961 | // ── config deserialization ──────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/influxdb_sink/src/lib.rs | 1028 | // ── config ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/influxdb_sink/src/lib.rs | 1065 | // ── to_precision_timestamp ──────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/influxdb_sink/src/lib.rs | 1194 | // ── deny_unknown_fields ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/influxdb_sink/src/lib.rs | 1226 | // ── line-protocol escaping ──────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/influxdb_sink/src/lib.rs | 1318 | // ── append_line ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/influxdb_sink/src/lib.rs | 1428 | // ── V3 append_line parity ───────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/influxdb_sink/src/lib.rs | 1453 | // ── build_body batching logic ───────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/influxdb_sink/src/lib.rs | 1527 | // ── version_label ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/influxdb_sink/src/lib.rs | 1539 | // ── PayloadFormat::from_config sink (warn on unknown) ───────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/influxdb_sink/src/lib.rs | 1564 | // ── append_line: metadata-as-fields when tag flags disabled ────────── | COMMENT |
| MEDIUM | core/connectors/sinks/influxdb_sink/src/lib.rs | 1652 | // ── append_line: Payload::Json variant ─────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/influxdb_sink/src/lib.rs | 1680 | // ── append_line: timestamp == 0 fallback ────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/influxdb_sink/src/lib.rs | 1710 | // ── build_body: zero-timestamp batch warning ────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/influxdb_sink/src/lib.rs | 1737 | // ── close() ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/influxdb_sink/src/lib.rs | 1751 | // ── get_client error when open() not called ─────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/influxdb_sink/src/lib.rs | 1763 | // ── append_line: text payload via include_metadata fields ───────────── | COMMENT |
| MEDIUM | core/connectors/sinks/influxdb_sink/src/lib.rs | 1791 | // ── Helper for tests: destructure config variants ───────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/influxdb_sink/src/lib.rs | 1811 | // ── HTTP integration tests ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/influxdb_sink/src/lib.rs | 1826 | // ── test helpers ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/influxdb_sink/src/lib.rs | 1946 | // ── open() ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/influxdb_sink/src/lib.rs | 2000 | // ── process_batch() ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/influxdb_sink/src/lib.rs | 2173 | // ── consume() chunking ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/influxdb_sink/src/lib.rs | 2298 | // ── write URL routing ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/influxdb_sink/src/lib.rs | 2348 | // ── map_precision_v3 ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/clickhouse_sink/src/client.rs | 253 | // ── Private helpers ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/clickhouse_sink/src/client.rs | 280 | // ─── Helper types ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/clickhouse_sink/src/body.rs | 37 | // ─── Body builders ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/clickhouse_sink/src/body.rs | 121 | // ─── Tests ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/clickhouse_sink/src/body.rs | 155 | // ── build_json_body ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/clickhouse_sink/src/body.rs | 195 | // ── build_string_body ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/clickhouse_sink/src/body.rs | 318 | // ── build_row_binary_body ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/clickhouse_sink/src/sink.rs | 29 | // ─── open ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/clickhouse_sink/src/sink.rs | 106 | // ─── consume ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/clickhouse_sink/src/sink.rs | 178 | // ─── close ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | core/connectors/sinks/clickhouse_sink/src/binary.rs | 81 | // ─── Core recursive serializer ──────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | core/connectors/sinks/clickhouse_sink/src/binary.rs | 89 | // ── Nullable ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | core/connectors/sinks/clickhouse_sink/src/binary.rs | 99 | // ── String ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/clickhouse_sink/src/binary.rs | 39 | // ─── Public API ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/clickhouse_sink/src/binary.rs | 117 | // ── Integers ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/clickhouse_sink/src/binary.rs | 161 | // ── Floats ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/clickhouse_sink/src/binary.rs | 171 | // ── Boolean ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/clickhouse_sink/src/binary.rs | 185 | // ── UUID ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/clickhouse_sink/src/binary.rs | 225 | // ── Date types ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/clickhouse_sink/src/binary.rs | 294 | // ── Decimal ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/clickhouse_sink/src/binary.rs | 325 | // ── IP addresses ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/connectors/sinks/clickhouse_sink/src/binary.rs | 343 | // ── Enums ──────────────────────────────────────────────────────────── | COMMENT |
| 194 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | web/src/lib/domain/MessageDetails.ts | 26 | export function partitionMessagesDetailsMapper(payload: Payload): MessagePartition { | CODE |
| LOW | examples/python/high-level/producer.py | 50 | async def ensure_send_to_destination(client: IggyClient) -> None: | CODE |
| LOW | examples/node/src/multi-tenant/consumer.ts | 67 | async function consumeMessagesFromTenants( | CODE |
| LOW | examples/node/src/multi-tenant/producer.ts | 93 | async function produceMessagesForTenants( | CODE |
| LOW | bdd/python/tests/test_basic_messaging.py | 89 | def stream_created_successfully(context): | CODE |
| LOW | bdd/python/tests/test_basic_messaging.py | 137 | def topic_created_successfully(context): | CODE |
| LOW | bdd/python/tests/test_basic_messaging.py | 205 | def messages_sent_successfully(context): | CODE |
| LOW | bdd/python/tests/test_basic_messaging.py | 247 | def verify_sequential_offsets(context, start_offset, end_offset): | CODE |
| LOW | bdd/python/tests/test_basic_messaging.py | 271 | def verify_last_message_match(context): | CODE |
| LOW⚡ | bdd/python/tests/test_raw_command.py | 67 | def raw_command_succeeds_with_empty_response(context): | CODE |
| LOW⚡ | bdd/python/tests/test_raw_command.py | 73 | def raw_command_succeeds_with_non_empty_response(context): | CODE |
| LOW⚡ | bdd/python/tests/test_raw_command.py | 79 | def raw_command_fails_with_invalid_command(context): | CODE |
| LOW | bdd/php/tests/BasicMessagingFeatureTest.php | 45 | public function testBasicMessagingScenario(string $scenarioName, array $steps): void | CODE |
| LOW | foreign/python/tests/test_http_config.py | 45 | def test_defaults_match_the_rust_sdk(self): | CODE |
| LOW | foreign/python/tests/test_http_config.py | 54 | def test_every_field_round_trips(self): | CODE |
| LOW | foreign/python/tests/test_http_config.py | 68 | def test_arguments_are_keyword_only(self): | CODE |
| LOW | foreign/python/tests/test_http_config.py | 83 | def test_repr_shows_every_field_as_python(self): | CODE |
| LOW⚡ | foreign/python/tests/test_http_config.py | 114 | def test_invalid_api_url_is_rejected(self, invalid_url: str): | CODE |
| LOW⚡ | foreign/python/tests/test_http_config.py | 124 | def test_empty_or_whitespace_jwt_is_rejected(self, bad_jwt: str): | CODE |
| LOW⚡ | foreign/python/tests/test_http_config.py | 134 | def test_out_of_range_retries_is_rejected(self, out_of_range: int): | CODE |
| LOW⚡ | foreign/python/tests/test_http_config.py | 147 | def test_negative_heartbeat_interval_is_rejected(self, negative: timedelta): | CODE |
| LOW⚡ | foreign/python/tests/test_http_config.py | 152 | def test_zero_heartbeat_interval_is_rejected(self): | CODE |
| LOW⚡ | foreign/python/tests/test_http_config.py | 161 | def test_maximum_heartbeat_interval_round_trips(self): | CODE |
| LOW | foreign/python/tests/test_http_config.py | 202 | def test_accepts_the_default_config(self): | CODE |
| LOW | foreign/python/tests/test_http_config.py | 207 | async def test_without_a_jwt_a_privileged_call_is_unauthenticated(self): | CODE |
| LOW | foreign/python/tests/test_http_config.py | 227 | async def test_client_connects_and_pings(self): | CODE |
| LOW | foreign/python/tests/test_http_config.py | 236 | async def test_client_sends_and_polls_a_message(self, unique_name): | CODE |
| LOW | foreign/python/tests/test_http_config.py | 277 | async def test_jwt_config_actually_authenticates(self, unique_name): | CODE |
| LOW | foreign/python/tests/test_http_config.py | 313 | async def test_wrong_jwt_is_rejected_by_the_server(self, unique_name): | CODE |
| LOW | foreign/python/tests/test_http_config.py | 335 | async def test_consumer_group_is_rejected(self, unique_name): | CODE |
| LOW | foreign/python/tests/conftest.py | 149 | def pytest_collection_modifyitems(items): | CODE |
| LOW | foreign/python/tests/test_stats.py | 107 | async def test_get_stats_reflects_topology( | CODE |
| LOW | foreign/python/tests/test_stats.py | 183 | async def test_get_stats_cache_metrics_dict(self, iggy_client: IggyClient): | CODE |
| LOW | foreign/python/tests/test_stats.py | 190 | def test_cache_metrics_key_is_constructible_and_hashable(self): | CODE |
| LOW | foreign/python/tests/test_stats.py | 211 | async def test_get_stats_requires_connection_and_auth(self): | CODE |
| LOW | foreign/python/tests/test_stats.py | 233 | async def test_get_stats_requires_server_permission( | CODE |
| LOW⚡ | foreign/python/tests/test_user.py | 241 | async def test_get_user_rejects_empty_identifier_locally( | CODE |
| LOW⚡ | foreign/python/tests/test_user.py | 250 | async def test_get_user_rejects_out_of_range_numeric_id( | CODE |
| LOW⚡ | foreign/python/tests/test_user.py | 258 | async def test_get_user_returns_same_result_when_called_repeatedly( | CODE |
| LOW | foreign/python/tests/test_user.py | 70 | async def test_create_user_defaults_to_active_status( | CODE |
| LOW | foreign/python/tests/test_user.py | 82 | async def test_create_inactive_user(self, iggy_client: IggyClient, unique_name): | CODE |
| LOW | foreign/python/tests/test_user.py | 96 | async def test_duplicate_username_fails(self, iggy_client: IggyClient, unique_name): | CODE |
| LOW | foreign/python/tests/test_user.py | 108 | async def test_created_user_can_login(self, iggy_client: IggyClient, unique_name): | CODE |
| LOW | foreign/python/tests/test_user.py | 122 | async def test_inactive_user_cannot_login( | CODE |
| LOW | foreign/python/tests/test_user.py | 138 | async def test_deleted_user_cannot_login( | CODE |
| LOW | foreign/python/tests/test_user.py | 158 | async def test_create_user_rejects_out_of_bounds_username( | CODE |
| LOW | foreign/python/tests/test_user.py | 173 | async def test_create_user_rejects_out_of_bounds_password( | CODE |
| LOW | foreign/python/tests/test_user.py | 188 | async def test_create_user_accepts_multibyte_credentials( | CODE |
| LOW | foreign/python/tests/test_user.py | 223 | async def test_get_nonexistent_user_returns_none( | CODE |
| LOW | foreign/python/tests/test_user.py | 280 | async def test_get_users_lists_root_and_created_users( | CODE |
| LOW | foreign/python/tests/test_user.py | 345 | async def test_update_username_and_status_together( | CODE |
| LOW | foreign/python/tests/test_user.py | 365 | async def test_update_user_with_empty_options_succeeds( | CODE |
| LOW | foreign/python/tests/test_user.py | 382 | async def test_update_user_forwards_options( | CODE |
| LOW | foreign/python/tests/test_user.py | 401 | async def test_update_user_with_no_fields_is_a_noop( | CODE |
| LOW | foreign/python/tests/test_user.py | 418 | async def test_update_user_applied_repeatedly_is_idempotent( | CODE |
| LOW | foreign/python/tests/test_user.py | 436 | async def test_update_username_to_existing_username_fails( | CODE |
| LOW | foreign/python/tests/test_user.py | 457 | async def test_update_nonexistent_user_fails( | CODE |
| LOW | foreign/python/tests/test_user.py | 473 | async def test_update_user_rejects_out_of_bounds_username( | CODE |
| LOW | foreign/python/tests/test_user.py | 491 | async def test_update_user_accepts_multibyte_username( | CODE |
| LOW | foreign/python/tests/test_user.py | 522 | async def test_delete_user_by_numeric_id( | CODE |
| 447 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | foreign/python/tests/test_http_config.py | 0 | test that an unconfigured transport matches the rust sdk defaults. | STRING |
| HIGH | foreign/python/tests/test_quic_config.py | 0 | test that an unconfigured transport matches the rust sdk defaults. | STRING |
| HIGH | foreign/python/tests/test_websocket_config.py | 0 | test that an unconfigured transport matches the rust sdk defaults. | STRING |
| HIGH | foreign/python/tests/test_client_config.py | 0 | test that an unconfigured transport matches the rust sdk defaults. | STRING |
| HIGH | foreign/python/tests/test_http_config.py | 0 | test that each configured field is readable back unchanged. | STRING |
| HIGH | foreign/python/tests/test_quic_config.py | 0 | test that each configured field is readable back unchanged. | STRING |
| HIGH | foreign/python/tests/test_websocket_config.py | 0 | test that each configured field is readable back unchanged. | STRING |
| HIGH | foreign/python/tests/test_client_config.py | 0 | test that each configured field is readable back unchanged. | STRING |
| HIGH | foreign/python/tests/test_http_config.py | 0 | test that a retry count outside the wire range names the argument. the conversion pyo3 does on its own raises overflower | STRING |
| HIGH | foreign/python/tests/test_quic_config.py | 0 | test that a retry count outside the wire range names the argument. the conversion pyo3 does on its own raises overflower | STRING |
| HIGH | foreign/python/tests/test_websocket_config.py | 0 | test that a retry count outside the wire range names the argument. the conversion pyo3 does on its own raises overflower | STRING |
| HIGH | foreign/python/tests/test_client_config.py | 0 | test that a retry count outside the wire range names the argument. the conversion pyo3 does on its own raises overflower | STRING |
| HIGH | foreign/python/tests/test_http_config.py | 0 | test that a negative heartbeat interval fails at construction. | STRING |
| HIGH | foreign/python/tests/test_quic_config.py | 0 | test that a negative heartbeat interval fails at construction. | STRING |
| HIGH | foreign/python/tests/test_websocket_config.py | 0 | test that a negative heartbeat interval fails at construction. | STRING |
| HIGH | foreign/python/tests/test_client_config.py | 0 | test that a negative heartbeat interval fails at construction. | STRING |
| HIGH | foreign/python/tests/test_http_config.py | 0 | test that a zero heartbeat interval fails at construction. nothing downstream reads zero as "disabled"; it heartbeats in | STRING |
| HIGH | foreign/python/tests/test_quic_config.py | 0 | test that a zero heartbeat interval fails at construction. nothing downstream reads zero as "disabled"; it heartbeats in | STRING |
| HIGH | foreign/python/tests/test_websocket_config.py | 0 | test that a zero heartbeat interval fails at construction. nothing downstream reads zero as "disabled"; it heartbeats in | STRING |
| HIGH | foreign/python/tests/test_client_config.py | 0 | test that a zero heartbeat interval fails at construction. nothing downstream reads zero as "disabled"; it heartbeats in | STRING |
| HIGH | foreign/python/tests/test_quic_config.py | 0 | test that an unconfigured policy reconnects forever, one second apart. | STRING |
| HIGH | foreign/python/tests/test_websocket_config.py | 0 | test that an unconfigured policy reconnects forever, one second apart. | STRING |
| HIGH | foreign/python/tests/test_client_config.py | 0 | test that an unconfigured policy reconnects forever, one second apart. | STRING |
| HIGH | foreign/python/tests/test_quic_config.py | 0 | test that the adjacent flags cannot be passed positionally. | STRING |
| HIGH | foreign/python/tests/test_websocket_config.py | 0 | test that the adjacent flags cannot be passed positionally. | STRING |
| HIGH | foreign/python/tests/test_client_config.py | 0 | test that the adjacent flags cannot be passed positionally. | STRING |
| HIGH | foreign/python/tests/test_quic_config.py | 0 | test that a negative duration fails at construction, not at connect. | STRING |
| HIGH | foreign/python/tests/test_websocket_config.py | 0 | test that a negative duration fails at construction, not at connect. | STRING |
| HIGH | foreign/python/tests/test_client_config.py | 0 | test that a negative duration fails at construction, not at connect. | STRING |
| HIGH | foreign/python/tests/test_quic_config.py | 0 | test that a zero cooldown is legal and readable back. | STRING |
| HIGH | foreign/python/tests/test_websocket_config.py | 0 | test that a zero cooldown is legal and readable back. | STRING |
| HIGH | foreign/python/tests/test_client_config.py | 0 | test that a zero cooldown is legal and readable back. | STRING |
| HIGH | foreign/python/tests/test_quic_config.py | 0 | test that a zero interval fails whatever the retry policy is. the interval is a delay between attempts, so zero reconnec | STRING |
| HIGH | foreign/python/tests/test_websocket_config.py | 0 | test that a zero interval fails whatever the retry policy is. the interval is a delay between attempts, so zero reconnec | STRING |
| HIGH | foreign/python/tests/test_client_config.py | 0 | test that a zero interval fails whatever the retry policy is. the interval is a delay between attempts, so zero reconnec | STRING |
| HIGH | foreign/python/tests/test_quic_config.py | 0 | test that an interval beyond 68 years survives the i32 boundary. | STRING |
| HIGH | foreign/python/tests/test_websocket_config.py | 0 | test that an interval beyond 68 years survives the i32 boundary. | STRING |
| HIGH | foreign/python/tests/test_client_config.py | 0 | test that an interval beyond 68 years survives the i32 boundary. | STRING |
| HIGH | foreign/python/tests/test_quic_config.py | 0 | test that the address cannot be passed positionally. | STRING |
| HIGH | foreign/python/tests/test_websocket_config.py | 0 | test that the address cannot be passed positionally. | STRING |
| HIGH | foreign/python/tests/test_client_config.py | 0 | test that the address cannot be passed positionally. | STRING |
| HIGH | foreign/python/tests/test_quic_config.py | 0 | test that a malformed address fails at construction, naming itself. | STRING |
| HIGH | foreign/python/tests/test_websocket_config.py | 0 | test that a malformed address fails at construction, naming itself. | STRING |
| HIGH | foreign/python/tests/test_client_config.py | 0 | test that a malformed address fails at construction, naming itself. | STRING |
| HIGH | foreign/python/tests/test_quic_config.py | 0 | test that configured credentials are actually replayed on connect. | STRING |
| HIGH | foreign/python/tests/test_websocket_config.py | 0 | test that configured credentials are actually replayed on connect. | STRING |
| HIGH | foreign/python/tests/test_client_config.py | 0 | test that configured credentials are actually replayed on connect. | STRING |
| HIGH | foreign/python/tests/test_quic_config.py | 0 | test that a privileged call succeeds without a manual login_user(). | STRING |
| HIGH | foreign/python/tests/test_websocket_config.py | 0 | test that a privileged call succeeds without a manual login_user(). | STRING |
| HIGH | foreign/python/tests/test_client_config.py | 0 | test that a privileged call succeeds without a manual login_user(). | STRING |
| HIGH | foreign/python/tests/test_quic_config.py | 0 | test that the same call fails when no credentials are configured. | STRING |
| HIGH | foreign/python/tests/test_websocket_config.py | 0 | test that the same call fails when no credentials are configured. | STRING |
| HIGH | foreign/python/tests/test_client_config.py | 0 | test that the same call fails when no credentials are configured. | STRING |
| HIGH | foreign/python/tests/test_quic_config.py | 0 | test that bad configured credentials surface as a connect failure. | STRING |
| HIGH | foreign/python/tests/test_websocket_config.py | 0 | test that bad configured credentials surface as a connect failure. | STRING |
| HIGH | foreign/python/tests/test_client_config.py | 0 | test that bad configured credentials surface as a connect failure. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …/java/org/apache/iggy/examples/ConsumerOffsetTest.java | 96 | return new org.apache.iggy.client.async.MessagesClient() { | CODE |
| CRITICAL | …apache/iggy/client/blocking/tcp/TlsConnectionTest.java | 145 | org.apache.iggy.consumergroup.Consumer.of(0L), | CODE |
| CRITICAL | …che/iggy/client/async/AsyncConnectionPoolAuthTest.java | 177 | org.apache.iggy.identifier.TopicId.of("test-topic"), | CODE |
| CRITICAL | …che/iggy/client/async/AsyncConnectionPoolAuthTest.java | 215 | org.apache.iggy.identifier.TopicId.of("test-topic"), | CODE |
| CRITICAL | …che/iggy/client/async/AsyncConnectionPoolAuthTest.java | 233 | org.apache.iggy.identifier.TopicId.of("test-topic"), | CODE |
| CRITICAL | …/java/org/apache/iggy/serde/BytesDeserializerTest.java | 725 | .isCloseTo(0.91f, org.assertj.core.data.Offset.offset(0.01f)); | CODE |
| CRITICAL | …apache/iggy/client/blocking/http/TopicsHttpClient.java | 80 | toStringOptions(org.apache.iggy.topic.TopicOptions.withDurabilityDefaults(options)))); | CODE |
| CRITICAL | …/org/apache/iggy/client/async/tcp/TopicsTcpClient.java | 119 | org.apache.iggy.topic.TopicOptions.withDurabilityDefaults(options)); | CODE |
| CRITICAL | …n/java/org/apache/iggy/flink/example/WordCountJob.java | 109 | .returns(org.apache.flink.api.common.typeinfo.Types.TUPLE( | CODE |
| CRITICAL | …org/apache/iggy/connector/flink/source/IggySource.java | 185 | return Consumer.group(org.apache.iggy.identifier.ConsumerId.of(consumerGroupName)); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | core/integration/tests/connectors/http/http_sink.rs | 733 | // Step 3: Wait for WireMock to receive all requests | COMMENT |
| LOW⚡ | core/integration/tests/connectors/http/http_sink.rs | 740 | // Step 4: Verify bare payload — no metadata wrapper | COMMENT |
| LOW⚡ | core/integration/tests/connectors/http/http_sink.rs | 802 | // Step 3: Wait for all 5 requests | COMMENT |
| LOW⚡ | core/integration/tests/connectors/http/http_sink.rs | 809 | // Step 4: Extract offsets from metadata | COMMENT |
| LOW⚡ | core/integration/tests/connectors/http/http_sink.rs | 865 | // Step 1: Both topics created by connector_multi_topic_stream seed (runs before | COMMENT |
| LOW⚡ | core/integration/tests/connectors/http/http_sink.rs | 869 | // Step 2: Send 2 messages to topic 1 with source identifier in payload | COMMENT |
| LOW⚡ | core/integration/tests/connectors/http/http_sink.rs | 915 | // Step 4: Wait for all 3 messages (2 from topic 1 + 1 from topic 2) | COMMENT |
| LOW⚡ | core/integration/tests/connectors/http/http_sink.rs | 922 | // Step 5: Group by iggy_topic metadata and verify counts + payload content | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 313 | // Step 1: Build 3 JSON messages with distinct payloads | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 333 | // Step 2: Publish messages to Iggy | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 344 | // Step 3: Wait for WireMock to receive all 3 individual HTTP requests | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 359 | // Step 4: Verify each request has correct method, URL, and envelope structure | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 392 | // Step 5: Verify content type header | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 455 | // Step 1: Wait for the single NDJSON request. The seed pre-published all | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 467 | // Step 2: Parse NDJSON body — each line is a separate JSON envelope | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 489 | // Step 3: Verify NDJSON content type | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 552 | // Step 1: Wait for the single JSON array request. The seed pre-published all | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 564 | // Step 2: Parse body as JSON array and verify structure | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 587 | // Step 3: Verify JSON content type | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 615 | // Step 1: Build 3 raw byte messages | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 634 | // Step 2: Publish messages to Iggy | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 645 | // Step 3: Wait for all 3 raw HTTP requests (raw mode is always 1:1) | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 659 | // Step 4: Verify raw mode — no metadata envelope | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 674 | // Step 5: Verify raw content type | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 702 | // Step 1: Build 3 simple JSON messages | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 722 | // Step 2: Publish messages to Iggy | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 778 | // Step 1: Build 5 messages (more than default 3 to better test ordering) | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 791 | // Step 2: Publish messages to Iggy | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 827 | // Step 5: Sort and verify contiguous offsets (delivery order may vary) | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 895 | // Step 3: Send 1 message to topic 2 with different source identifier | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 958 | // Step 6: Verify exact message counts per topic | COMMENT |
| LOW⚡ | …os/consumer_group_auto_commit_reconnection_scenario.rs | 70 | // Step 1: Produce messages to exactly the same stream/topic/partition | COMMENT |
| LOW⚡ | …os/consumer_group_auto_commit_reconnection_scenario.rs | 73 | // Step 2: Create a consumer group with singular consumer that uses auto_commit | COMMENT |
| LOW⚡ | …os/consumer_group_auto_commit_reconnection_scenario.rs | 76 | // Step 3: Consume 50% of the produced messages | COMMENT |
| LOW⚡ | …os/consumer_group_auto_commit_reconnection_scenario.rs | 83 | // Step 4: Disconnect the consumer | COMMENT |
| LOW⚡ | …os/consumer_group_auto_commit_reconnection_scenario.rs | 86 | // Step 5: Check if the committed offset is at the place where it should be (halfway through) | COMMENT |
| LOW⚡ | …os/consumer_group_auto_commit_reconnection_scenario.rs | 93 | // Step 6: Reconnect the consumer | COMMENT |
| LOW⚡ | …os/consumer_group_auto_commit_reconnection_scenario.rs | 96 | // Step 7: Consume rest of the messages | COMMENT |
| LOW⚡ | …os/consumer_group_auto_commit_reconnection_scenario.rs | 103 | // Step 8: Check if the committed offset is at the end | COMMENT |
| LOW⚡ | …er/scenarios/consumer_group_offset_cleanup_scenario.rs | 63 | // Step 1: Produce 100 messages | COMMENT |
| LOW⚡ | …er/scenarios/consumer_group_offset_cleanup_scenario.rs | 70 | // Step 2: Create consumer group and consume messages | COMMENT |
| LOW⚡ | …er/scenarios/consumer_group_offset_cleanup_scenario.rs | 113 | // Step 3: Delete the consumer group | COMMENT |
| LOW⚡ | …er/scenarios/consumer_group_offset_cleanup_scenario.rs | 123 | // Step 4: Try to get offset for the deleted consumer group - should not exist | COMMENT |
| LOW | …tests/server/scenarios/restart_offset_skip_scenario.rs | 107 | // Step 3: Restart server | COMMENT |
| LOW | core/metadata/src/stm/consumer_group.rs | 206 | // Step 1: hand unassigned partitions straight to idle members. | COMMENT |
| LOW | core/metadata/src/stm/consumer_group.rs | 229 | // Step 2: mark excess on over-assigned members as pending revocation. | COMMENT |
| LOW | .claude/skills/team-review-slim/SKILL.md | 127 | ## Step 1: Identify the target (no reading) | COMMENT |
| LOW | .claude/skills/team-review-slim/SKILL.md | 134 | ## Step 2: Four one-shot experts (one message, parallel) | COMMENT |
| LOW | .claude/skills/team-review-slim/SKILL.md | 172 | ## Step 3: Merge the role files (moderator, no agents) | COMMENT |
| LOW | .claude/skills/team-review-slim/SKILL.md | 186 | ## Step 4: Write the report, then stop | COMMENT |
| LOW | .claude/skills/team-review/SKILL.md | 108 | ## Step 1: Identify the target (no reading) | COMMENT |
| LOW | .claude/skills/team-review/SKILL.md | 115 | ## Step 2: Round 1, four one-shot experts (one message, parallel) | COMMENT |
| LOW | .claude/skills/team-review/SKILL.md | 152 | ## Step 3: Merge into neutral claims (moderator) | COMMENT |
| LOW | .claude/skills/team-review/SKILL.md | 162 | ## Step 4: Clean-room validation (one message, parallel) | COMMENT |
| LOW | .claude/skills/team-review/SKILL.md | 180 | ## Step 5: Contested items (only when triggered) | COMMENT |
| LOW | .claude/skills/team-review/SKILL.md | 187 | ## Step 6: Synthesize, write, done | COMMENT |
| LOW | .claude/skills/connector-review/SKILL.md | 110 | ## Step 1: Identify the target (no reading) | COMMENT |
| LOW | .claude/skills/connector-review/SKILL.md | 118 | ## Step 2: Round 1, connector experts (one message, parallel) | COMMENT |
| LOW | .claude/skills/connector-review/SKILL.md | 161 | ## Step 3: Merge into neutral claims (moderator) | COMMENT |
| LOW | .claude/skills/connector-review/SKILL.md | 170 | ## Step 4: Clean-room validation (one message, parallel) | COMMENT |
| 6 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | core/integration/tests/connectors/http/http_sink.rs | 733 | // Step 3: Wait for WireMock to receive all requests | COMMENT |
| LOW⚡ | core/integration/tests/connectors/http/http_sink.rs | 740 | // Step 4: Verify bare payload — no metadata wrapper | COMMENT |
| LOW⚡ | core/integration/tests/connectors/http/http_sink.rs | 802 | // Step 3: Wait for all 5 requests | COMMENT |
| LOW⚡ | core/integration/tests/connectors/http/http_sink.rs | 809 | // Step 4: Extract offsets from metadata | COMMENT |
| LOW⚡ | core/integration/tests/connectors/http/http_sink.rs | 865 | // Step 1: Both topics created by connector_multi_topic_stream seed (runs before | COMMENT |
| LOW⚡ | core/integration/tests/connectors/http/http_sink.rs | 869 | // Step 2: Send 2 messages to topic 1 with source identifier in payload | COMMENT |
| LOW⚡ | core/integration/tests/connectors/http/http_sink.rs | 915 | // Step 4: Wait for all 3 messages (2 from topic 1 + 1 from topic 2) | COMMENT |
| LOW⚡ | core/integration/tests/connectors/http/http_sink.rs | 922 | // Step 5: Group by iggy_topic metadata and verify counts + payload content | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 313 | // Step 1: Build 3 JSON messages with distinct payloads | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 333 | // Step 2: Publish messages to Iggy | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 344 | // Step 3: Wait for WireMock to receive all 3 individual HTTP requests | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 359 | // Step 4: Verify each request has correct method, URL, and envelope structure | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 392 | // Step 5: Verify content type header | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 455 | // Step 1: Wait for the single NDJSON request. The seed pre-published all | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 467 | // Step 2: Parse NDJSON body — each line is a separate JSON envelope | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 489 | // Step 3: Verify NDJSON content type | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 552 | // Step 1: Wait for the single JSON array request. The seed pre-published all | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 564 | // Step 2: Parse body as JSON array and verify structure | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 587 | // Step 3: Verify JSON content type | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 615 | // Step 1: Build 3 raw byte messages | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 634 | // Step 2: Publish messages to Iggy | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 645 | // Step 3: Wait for all 3 raw HTTP requests (raw mode is always 1:1) | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 659 | // Step 4: Verify raw mode — no metadata envelope | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 674 | // Step 5: Verify raw content type | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 702 | // Step 1: Build 3 simple JSON messages | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 722 | // Step 2: Publish messages to Iggy | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 778 | // Step 1: Build 5 messages (more than default 3 to better test ordering) | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 791 | // Step 2: Publish messages to Iggy | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 827 | // Step 5: Sort and verify contiguous offsets (delivery order may vary) | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 895 | // Step 3: Send 1 message to topic 2 with different source identifier | COMMENT |
| LOW | core/integration/tests/connectors/http/http_sink.rs | 958 | // Step 6: Verify exact message counts per topic | COMMENT |
| LOW⚡ | …os/consumer_group_auto_commit_reconnection_scenario.rs | 70 | // Step 1: Produce messages to exactly the same stream/topic/partition | COMMENT |
| LOW⚡ | …os/consumer_group_auto_commit_reconnection_scenario.rs | 73 | // Step 2: Create a consumer group with singular consumer that uses auto_commit | COMMENT |
| LOW⚡ | …os/consumer_group_auto_commit_reconnection_scenario.rs | 76 | // Step 3: Consume 50% of the produced messages | COMMENT |
| LOW⚡ | …os/consumer_group_auto_commit_reconnection_scenario.rs | 83 | // Step 4: Disconnect the consumer | COMMENT |
| LOW⚡ | …os/consumer_group_auto_commit_reconnection_scenario.rs | 86 | // Step 5: Check if the committed offset is at the place where it should be (halfway through) | COMMENT |
| LOW⚡ | …os/consumer_group_auto_commit_reconnection_scenario.rs | 93 | // Step 6: Reconnect the consumer | COMMENT |
| LOW⚡ | …os/consumer_group_auto_commit_reconnection_scenario.rs | 96 | // Step 7: Consume rest of the messages | COMMENT |
| LOW⚡ | …os/consumer_group_auto_commit_reconnection_scenario.rs | 103 | // Step 8: Check if the committed offset is at the end | COMMENT |
| LOW⚡ | …er/scenarios/consumer_group_offset_cleanup_scenario.rs | 63 | // Step 1: Produce 100 messages | COMMENT |
| LOW⚡ | …er/scenarios/consumer_group_offset_cleanup_scenario.rs | 70 | // Step 2: Create consumer group and consume messages | COMMENT |
| LOW⚡ | …er/scenarios/consumer_group_offset_cleanup_scenario.rs | 113 | // Step 3: Delete the consumer group | COMMENT |
| LOW⚡ | …er/scenarios/consumer_group_offset_cleanup_scenario.rs | 123 | // Step 4: Try to get offset for the deleted consumer group - should not exist | COMMENT |
| LOW | …tests/server/scenarios/restart_offset_skip_scenario.rs | 107 | // Step 3: Restart server | COMMENT |
| LOW | core/metadata/src/stm/consumer_group.rs | 206 | // Step 1: hand unassigned partitions straight to idle members. | COMMENT |
| LOW | core/metadata/src/stm/consumer_group.rs | 229 | // Step 2: mark excess on over-assigned members as pending revocation. | COMMENT |
| LOW | .github/workflows/_publish_rust_crates.yml | 265 | # Step 1: Publish iggy_binary_protocol (depends on nothing in-tree) | COMMENT |
| LOW | .github/workflows/_publish_rust_crates.yml | 306 | # Step 2: Publish iggy_common (depends on iggy_binary_protocol) | COMMENT |
| LOW | .github/workflows/_publish_rust_crates.yml | 347 | # Step 3: Publish iggy SDK (depends on common and protocol) | COMMENT |
| LOW | .github/workflows/_publish_rust_crates.yml | 388 | # Step 4: Publish iggy-cli (depends on SDK and protocol) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | .config/nextest.toml | 49 | # The harness (tests/common/iggy_server.rs) sets IGGY_SHARDING_PIN_CORES=false and | COMMENT |
| MEDIUM | .config/nextest.toml | 51 | # harness (harness/handle/server.rs) uses, so a server no longer sizes its shard pool to the whole | COMMENT |
| MEDIUM | core/connectors/sinks/elasticsearch_sink/src/lib.rs | 126 | // primary #3728 flake fix (that is the harness readiness gate, which | COMMENT |
| MEDIUM | core/connectors/sinks/doris_sink/src/lib.rs | 799 | /// `#[doc(hidden)]`: `pub` only so the integration test harness can reproduce | COMMENT |
| MEDIUM | …data_integrity/verify_auto_commit_offset_replicates.rs | 152 | /// it is robust to the stream/topic/partition id layout; the test drives exactly | COMMENT |
| MEDIUM | core/integration/src/harness/disk.rs | 402 | /// so it is robust to the stream/topic/partition id layout. Reads the leading | COMMENT |
| MEDIUM | core/partitions/Cargo.toml | 46 | # Fault injection for the harness (`IggyPartition::inject_commit_failure`): | COMMENT |
| MEDIUM | core/sdk/src/lib.rs | 43 | //! It is recommended to start with the high-level API, and utilize the low-level API | COMMENT |
| MEDIUM | core/harness_derive/src/lib.rs | 20 | //! The `#[iggy_harness]` attribute replaces boilerplate harness setup with a declarative DSL. | COMMENT |
| MEDIUM | core/harness_derive/src/codegen.rs | 618 | let #var_name = <#ty as ::integration::harness::TestFixture>::setup() | CODE |
| MEDIUM | scripts/ci/storage-compat.sh | 38 | # `server` package; the harness only LOCATES a binary, through | COMMENT |
| MEDIUM | .github/config/components.yml | 166 | # harness it drives rather than `core/integration/**`, which would fire | COMMENT |
| MEDIUM | bdd/rust/Cargo.toml | 35 | # `test` is set to false because cucumber uses its own test harness, which | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | README.md | 402 | Send a second message 'lorem ipsum' to the same stream, topic and partition: | CODE |
| LOW | README.md | 404 | `cargo run --bin iggy -- -u <iggy_username> -p <iggy_password> message send --partition-id 0 dev sample "lorem ipsum"` | CODE |
| LOW | core/connectors/sinks/influxdb_sink/src/lib.rs | 2206 | ..v2_config("placeholder").into_v2().unwrap() | CODE |
| LOW | core/connectors/sdk/tests/protobuf_integration.rs | 720 | "name": "John Doe", | CODE |
| LOW | core/connectors/sdk/tests/protobuf_integration.rs | 726 | "street": "123 Main St", | CODE |
| LOW | core/connectors/sdk/tests/flatbuffer_integration.rs | 120 | "name": "John Doe", | CODE |
| LOW | core/connectors/sdk/tests/flatbuffer_integration.rs | 126 | "street": "123 Main St", | CODE |
| LOW | core/connectors/sdk/tests/flatbuffer_integration.rs | 270 | "email": "test@test.com", | CODE |
| LOW | core/connectors/sdk/src/transforms/proto_convert.rs | 958 | "name": "John Doe", | CODE |
| LOW | core/connectors/sdk/src/transforms/proto_convert.rs | 969 | assert!(proto_text.contains("John Doe")); | CODE |
| LOW | core/connectors/sdk/src/transforms/proto_convert.rs | 996 | "full_name": "John Doe", | CODE |
| LOW | core/connectors/sdk/src/encoders/proto.rs | 737 | "name": "John Doe", | CODE |
| LOW | core/connectors/sdk/src/encoders/proto.rs | 761 | "name": "John Doe", | CODE |
| LOW | core/connectors/sdk/src/encoders/proto.rs | 879 | "name": "John Doe", | CODE |
| LOW | core/connectors/sdk/src/encoders/proto.rs | 898 | &simd_json::OwnedValue::from("John Doe") | CODE |
| LOW | core/connectors/sdk/src/encoders/proto.rs | 1160 | "name": "John Doe", | CODE |
| LOW | core/connectors/sdk/src/encoders/proto.rs | 1184 | assert!(data_str.contains("John Doe"), "Should contain user name"); | CODE |
| LOW | core/connectors/sources/postgres_source/README.md | 137 | "name": "John Doe", | CODE |
| LOW | …tests/connectors/influxdb/source_v3_config/config.toml | 40 | token = "placeholder" | CODE |
| LOW | …n/tests/connectors/influxdb/sink_v3_config/config.toml | 42 | token = "placeholder" | CODE |
| LOW⚡ | …gration/tests/server/scenarios/permissions_scenario.rs | 2844 | let dummy_id = Identifier::numeric(0).unwrap(); | CODE |
| LOW⚡ | …gration/tests/server/scenarios/permissions_scenario.rs | 2848 | IggyError::StreamIdNotFound(dummy_id.clone()).as_code(), | CODE |
| LOW⚡ | …gration/tests/server/scenarios/permissions_scenario.rs | 2850 | IggyError::TopicIdNotFound(dummy_id.clone(), dummy_id.clone()).as_code(), | CODE |
| LOW⚡ | …gration/tests/server/scenarios/permissions_scenario.rs | 2900 | let dummy_id = Identifier::numeric(0).unwrap(); | CODE |
| LOW⚡ | …gration/tests/server/scenarios/permissions_scenario.rs | 2903 | IggyError::StreamIdNotFound(dummy_id.clone()).as_code(), | CODE |
| LOW⚡ | …gration/tests/server/scenarios/permissions_scenario.rs | 2905 | IggyError::TopicIdNotFound(dummy_id.clone(), dummy_id.clone()).as_code(), | CODE |
| LOW | …sts/cli/message/test_message_send_from_file_command.rs | 263 | "Lorem ipsum dolor sit amet, consectetur adipiscing elit", | CODE |
| LOW | …sts/cli/message/test_message_send_from_file_command.rs | 263 | "Lorem ipsum dolor sit amet, consectetur adipiscing elit", | CODE |
| LOW | …tests/cli/message/test_message_poll_to_file_command.rs | 230 | "Lorem ipsum dolor sit amet, consectetur adipiscing elit", | CODE |
| LOW | …tests/cli/message/test_message_poll_to_file_command.rs | 230 | "Lorem ipsum dolor sit amet, consectetur adipiscing elit", | CODE |
| LOW | …ation/tests/cli/message/test_message_reply_via_file.rs | 32 | "Lorem ipsum dolor sit amet, consectetur adipiscing elit", | CODE |
| LOW | …ation/tests/cli/message/test_message_reply_via_file.rs | 32 | "Lorem ipsum dolor sit amet, consectetur adipiscing elit", | CODE |
| LOW | …gration/tests/cli/message/test_message_poll_command.rs | 259 | "Lorem ipsum dolor sit amet, consectetur adipiscing elit".into(), | CODE |
| LOW | …gration/tests/cli/message/test_message_poll_command.rs | 259 | "Lorem ipsum dolor sit amet, consectetur adipiscing elit".into(), | CODE |
| LOW | …apache/iggy/client/blocking/http/ObjectMapperTest.java | 412 | Message message = Message.of("placeholder"); | STRING |
| LOW | …apache/iggy/client/blocking/http/ObjectMapperTest.java | 446 | Message originalMessage = Message.of("placeholder"); | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/extract-version.sh | 346 | # Check if component exists | COMMENT |
| LOW | scripts/run-benches.sh | 48 | # Display results | COMMENT |
| LOW⚡ | scripts/profile.sh | 33 | # Check if the script is being run with the correct arguments | COMMENT |
| LOW⚡ | scripts/profile.sh | 39 | # Check if the app name and profiling mode are valid | COMMENT |
| LOW⚡ | scripts/profile.sh | 45 | # Check if the profiling mode is valid | COMMENT |
| LOW | scripts/profile.sh | 73 | # Check if the system settings for perf are configured correctly | COMMENT |
| LOW | scripts/profile.sh | 204 | # Display results | COMMENT |
| LOW | scripts/ci/shellcheck.sh | 81 | # Check if shellcheck is installed | COMMENT |
| LOW | scripts/ci/license-headers.sh | 56 | # Check if ASF_LICENSE.txt exists | COMMENT |
| LOW | scripts/ci/license-headers.sh | 75 | # Check if HawkEye is available | COMMENT |
| LOW | scripts/ci/taplo.sh | 70 | # Check if taplo is installed | COMMENT |
| LOW | scripts/ci/markdownlint.sh | 69 | # Check if markdownlint is installed | COMMENT |
| LOW | scripts/ci/trailing-newline.sh | 133 | # Check if file ends with a newline | COMMENT |
| LOW | scripts/dashboard/run_dev.sh | 30 | # Check if trunk is installed | COMMENT |
| LOW | scripts/performance/run-standard-performance-suite.sh | 190 | # Check if the server is running | COMMENT |
| LOW | scripts/performance/run-standard-performance-suite.sh | 244 | # Check if the server is running | COMMENT |
| LOW | .github/workflows/publish.yml | 487 | # Check if tag exists on the remote. Querying the REMOTE (not | COMMENT |
| LOW | .github/actions/go/post-merge/action.yml | 37 | # Check if version matches semantic versioning | COMMENT |
| LOW | .github/actions/python-maturin/post-merge/action.yml | 45 | # Check if version matches Python/PEP 440 versioning | COMMENT |
| LOW | .github/actions/python-maturin/post-merge/action.yml | 83 | # Check if directory exists and has files | COMMENT |
| LOW | .github/actions/node-npm/post-merge/action.yml | 131 | # Check if files to be published exist | COMMENT |
| LOW | helm/charts/iggy/values.yaml | 159 | # Set this to false only when the roster `ip` is an address the pod itself | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | foreign/python/tests/test_message_operations.py | 330 | assert isinstance(msg.length(), int) and msg.length() > 0 | CODE |
| HIGH | foreign/python/tests/test_message_operations.py | 778 | assert message.length() == len(expected_payload) | CODE |
| HIGH | foreign/python/tests/test_message_operations.py | 819 | assert message.length() == len(expected_payload) | CODE |
| HIGH | foreign/python/tests/test_message_operations.py | 859 | assert message.length() == len(payload) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | core/message_bus/src/installer/replica.rs | 44 | /// Shared scaffold for both delegated install directions: shutdown | COMMENT |
| MEDIUM | core/message_bus/src/installer/replica.rs | 322 | /// `spawn_replica_install` scaffold; transports with no equivalent | COMMENT |
| MEDIUM | core/message_bus/src/installer/tcp.rs | 43 | /// scaffold (`super::replica::install_replica_inbound` / `_outbound`). | COMMENT |
| MEDIUM | bdd/go/tests/leader_redirection.go | 395 | // metadata checks skipped in scaffold | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/python/basic/producer.py | 121 | except Exception as error: | CODE |
| LOW | examples/python/basic/consumer.py | 93 | except Exception as error: | CODE |
| LOW | examples/python/getting-started/producer.py | 227 | except Exception as error: | CODE |
| LOW | examples/python/getting-started/consumer.py | 171 | except Exception as error: | CODE |
| LOW | examples/python/getting-started/consumer.py | 207 | except Exception as error: | CODE |
| LOW | examples/python/message-headers/common.py | 170 | except Exception as error: | CODE |
| LOW | examples/python/message-headers/common.py | 215 | except Exception as error: | CODE |
| LOW | foreign/python/tests/utils.py | 158 | except Exception as err: | CODE |
| LOW | foreign/python/scripts/test.sh | 58 | except Exception as e: | CODE |
| MEDIUM | foreign/python/scripts/test.sh | 50 | def test_connection(): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | core/connectors/sinks/http_sink/config.toml | 89 | Authorization = "Bearer <YOUR_TOKEN_HERE>" | CODE |
| HIGH | core/connectors/runtime/README.md | 153 | api-key = "your-api-key" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | core/sdk/src/clients/producer.rs | 482 | /// # Creating a producer | COMMENT |
| MEDIUM | core/sdk/src/clients/consumer.rs | 288 | /// # Creating a consumer | COMMENT |
| MEDIUM | scripts/performance/run-standard-performance-suite.sh | 80 | # Create a directory for the performance results | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | .github/workflows/pr-skill-review-post.yml | 448 | parts.push('', '---', 'This review was generated by Claude Code ' + | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | foreign/python/tests/utils.py | 61 | except socket.gaierror: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/extract-version.sh | 25 | # Usage: | COMMENT |
| LOW | scripts/verify-crates-publish.sh | 30 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | core/simulator/src/packet.rs | 649 | // TODO: implement record/replay_recorded for deterministic replay support. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | foreign/python/tests/test_producer.py | 103 | CODE |