⚙️🦀 Build modular and scalable LLM Applications in Rust
This report summarizes scanner evidence for 0xPlaygrounds/rig, a Rust project with 9,029 GitHub stars. SynthScan examined 769,572 lines of code across 2849 source files, recording 2255 pattern matches distributed across 12 syntactic categories. The legacy adjusted pattern signal is 3.1 (Low 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.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 2204 finding(s).
Are imports declared and package/API names verified? 23 finding(s).
Are wrappers, guards, and repeated structures necessary? 121 finding(s).
Which changes need focused human review? 2255 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 2255 distinct pattern matches across 12 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | Cargo.toml | 21 | # `rig-test-support` dev dependency is path-only and Cargo strips it when | COMMENT |
| LOW | Cargo.toml | 221 | # and a downstream resolves anywhere inside that range — usually to whatever | COMMENT |
| LOW | Cargo.toml | 521 | audio = ["rig-core/audio", "rig-agent?/audio"] | COMMENT |
| LOW | crates/rig-http/src/runtime.rs | 1 | //! The tokio runtime the bundled transports poll their I/O in. | COMMENT |
| LOW | crates/rig-http/src/ws_client.rs | 1 | //! Transport-independent websocket handshakes, connections, and frames. | COMMENT |
| LOW | crates/rig-http/src/lib.rs | 1 | #![cfg_attr(docsrs, feature(doc_cfg))] | COMMENT |
| LOW | crates/rig-http/src/lib.rs | 21 | //! use rig_http::http_client::{DynHttpClient, HttpClientExt}; | COMMENT |
| LOW | crates/rig-http/src/wasm_compat.rs | 21 | "rig-http does not support threaded wasm (`+atomics`): its wasm-compat markers assume a \ | COMMENT |
| LOW | crates/rig-http/src/wasm_compat.rs | 81 | /// `Sync` on native targets, a no-op marker on browser wasm. | COMMENT |
| LOW | crates/rig-http/src/http_client/multipart.rs | 1 | //! Transport-neutral multipart fields and byte encoding. | COMMENT |
| LOW | crates/rig-http/src/http_client/mod.rs | 21 | pub use middleware::{Exchange, HttpMiddleware}; | COMMENT |
| LOW | crates/rig-http/src/http_client/mod.rs | 41 | /// The failed response's headers, verbatim. | COMMENT |
| LOW | crates/rig-http/src/http_client/mod.rs | 61 | /// The transport's own error, without a response. | COMMENT |
| LOW | crates/rig-http/src/http_client/mod.rs | 101 | status, | COMMENT |
| LOW | crates/rig-http/src/http_client/middleware.rs | 1 | //! Transport-boundary middleware for [`DynHttpClient`](super::DynHttpClient). | COMMENT |
| LOW | crates/rig-http/src/http_client/middleware.rs | 21 | /// hook. | COMMENT |
| LOW | crates/rig-http/src/http_client/middleware.rs | 41 | /// `rig-reqwest` does. Multipart requests skip body hooks. | COMMENT |
| LOW | crates/rig-http/src/http_client/middleware.rs | 61 | /// | COMMENT |
| LOW | crates/rig-http/src/http_client/erased.rs | 1 | //! Type-erased HTTP transport with optional middleware. | COMMENT |
| LOW | crates/rig-http/src/http_client/framing.rs | 1 | //! Incremental SSE and newline-delimited framing of response bytes. | COMMENT |
| LOW | crates/rig-gemini-grpc/tests/streaming_conformance.rs | 1 | //! Wire-conformance suite for the Gemini gRPC typed-event wire. | COMMENT |
| LOW | crates/rig-gemini-grpc/src/client.rs | 1 | //! The Gemini gRPC transport: the Gemini API's [`GeminiConfig`] on a tonic | COMMENT |
| LOW | crates/rig-gemini-grpc/src/client.rs | 41 | #[derive(Debug, thiserror::Error)] | COMMENT |
| LOW | crates/rig-gemini-grpc/src/rest.rs | 1 | //! The canonical proto3 JSON of the Gemini messages, which is the REST | COMMENT |
| LOW | crates/rig-gemini-grpc/src/embedding.rs | 1 | //! The Gemini text-embedding wire over gRPC: one `EmbedContent` call per text. | COMMENT |
| LOW | crates/rig-gemini-grpc/src/lib.rs | 1 | #![cfg_attr( | COMMENT |
| LOW | crates/rig-gemini-grpc/src/completion.rs | 1 | //! The Gemini `GenerateContent` completion wire over gRPC: `GenerateContent` | COMMENT |
| LOW | crates/rig-gemini-grpc/src/extension.rs | 1 | //! Typed request options and reply extras for the Gemini gRPC API, keyed by | COMMENT |
| LOW | crates/rig-cassette/Cargo.toml | 1 | [package] | COMMENT |
| LOW | crates/rig-cassette/tests/corpus_breadth.rs | 1 | //! Matrix N: provider breadth for the pass-2 shapes. | COMMENT |
| LOW | crates/rig-cassette/tests/corpus_breadth.rs | 21 | //! unadvertised call; the mock's empty turn is the shape); the prompted | COMMENT |
| LOW | crates/rig-cassette/tests/cassette_history_survival.rs | 1 | //! Corpus guard: what a provider delivered must come back, and every tool | COMMENT |
| LOW | crates/rig-cassette/tests/cassette_history_survival.rs | 21 | //! 3. [`every_recorded_request_pairs_tool_calls_with_results`]: no request | COMMENT |
| LOW | crates/rig-cassette/tests/corpus_invalid.rs | 1 | //! Matrix G: invalid tool calls, streamed and ignored. | COMMENT |
| LOW | crates/rig-cassette/tests/corpus_invalid.rs | 21 | //! | resolution | hook `Retry` · hook `Repair` · hook `Skip` · policy `Ignore` · policy `Fail` | | COMMENT |
| LOW | crates/rig-cassette/tests/corpus_invalid.rs | 41 | //! | `mock_invalid_streamed_retry_once` | `invalid_streamed_retry_once_…` | `[Completion, Completion, Tool, Completion] | COMMENT |
| LOW | crates/rig-cassette/tests/corpus_header.rs | 1 | //! Matrix S: the header's new types. | COMMENT |
| LOW | crates/rig-cassette/tests/corpus_header.rs | 21 | //! | COMMENT |
| LOW | crates/rig-cassette/tests/corpus_outcome.rs | 1 | //! Matrix D: continuation, cancellation and failure outcomes. | COMMENT |
| LOW | crates/rig-cassette/tests/corpus_outcome.rs | 21 | //! | COMMENT |
| LOW | crates/rig-cassette/tests/corpus_outcome.rs | 41 | //! | `anthropic_outcome_model_error_streamed` | `model_error_streamed_…` | the same, streamed | the stream's one item i | COMMENT |
| LOW | crates/rig-cassette/tests/cassette_usage_census.rs | 1 | //! Corpus census: what rig's `Usage` reports for every recorded completion. | COMMENT |
| LOW | crates/rig-cassette/tests/golden_replay.rs | 1 | //! The original effect corpus: nine golden effect logs, each recorded once by one | COMMENT |
| LOW | crates/rig-cassette/tests/golden_replay.rs | 21 | //! divergence in what either interpreter *asks* fails the run at that | COMMENT |
| LOW | crates/rig-cassette/tests/interpreters_agree.rs | 1 | //! Two interpreters of the agent program agree (Swierstra: any two | COMMENT |
| LOW | crates/rig-cassette/tests/corpus_resume.rs | 1 | //! Matrix L: resumption under everything. | COMMENT |
| LOW | crates/rig-cassette/tests/corpus_resume.rs | 21 | //! # Dimensions | COMMENT |
| LOW | crates/rig-cassette/tests/corpus_resume.rs | 41 | //! | COMMENT |
| LOW | crates/rig-cassette/tests/corpus_resume.rs | 61 | //! | `gemini_retrieval_context_and_tools` | the head's retrievals; the tail retrieves again for its turn | | COMMENT |
| LOW | crates/rig-cassette/tests/durable_execution.rs | 1 | //! Durable execution, as one property: a run interrupted after tool call | COMMENT |
| LOW | crates/rig-cassette/tests/corpus_shaping.rs | 1 | //! Matrix M: per-turn shaping. | COMMENT |
| LOW | crates/rig-cassette/tests/corpus_shaping.rs | 21 | //! | COMMENT |
| LOW | crates/rig-cassette/tests/corpus_shaping.rs | 41 | //! | `anthropic_shaping_extra_context_streamed` | `extra_context_streamed_…` | the same, events kept | | COMMENT |
| LOW | crates/rig-cassette/tests/corpus_retrieval.rs | 1 | //! Matrix A: retrieval effects. | COMMENT |
| LOW | crates/rig-cassette/tests/corpus_retrieval.rs | 21 | //! | `samples` | 1 · 2 · 5 over three documents | | COMMENT |
| LOW | crates/rig-cassette/tests/corpus_retrieval.rs | 41 | //! | `gemini_retrieval_dynamic_context_two_streamed` | `dynamic_context_two_streamed_…` | the same with two documents, | COMMENT |
| LOW | crates/rig-cassette/tests/corpus_delta.rs | 1 | //! Matrix K: the delta wire. | COMMENT |
| LOW | crates/rig-cassette/tests/corpus_delta.rs | 21 | //! | argument order | after the name · before the name (buffered) | | COMMENT |
| LOW | crates/rig-cassette/tests/corpus_delta.rs | 41 | //! | golden | producer | shape | ending | | COMMENT |
| LOW | crates/rig-cassette/tests/corpus_delta.rs | 61 | //! emits and accepts them as steps of their own), sent a thought | COMMENT |
| 2008 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …aude-cloak/tests/acceptance/test_failure_collection.py | 24 | def test_known_refusal_and_semantic_failure_only_with_complete_wire_proof(self): | CODE |
| LOW | …aude-cloak/tests/acceptance/test_failure_collection.py | 46 | def test_dispatch_and_terminal_bounds_are_not_semantic_failures(self): | CODE |
| LOW | …aude-cloak/tests/acceptance/test_failure_collection.py | 63 | def test_collection_waits_for_effects_and_only_advances_fixed_next_phase(self): | CODE |
| LOW | …aude-cloak/tests/acceptance/test_failure_collection.py | 92 | def test_semantic_failure_stays_failed_and_transport_unknown_never_advances(self): | CODE |
| LOW | …aude-cloak/tests/acceptance/test_failure_collection.py | 110 | def test_scope_and_fixed_phase_sequence_bounds(self): | CODE |
| LOW | …aude-cloak/tests/acceptance/test_failure_collection.py | 123 | def test_correct_facts_do_not_hide_unexpected_tool_dispatch(self): | CODE |
| LOW | …aude-cloak/tests/acceptance/test_failure_collection.py | 136 | def test_passing_terminal_cancellation_requires_every_completion_proof(self): | CODE |
| LOW | …aude-cloak/tests/acceptance/test_failure_collection.py | 158 | def test_retention_requires_real_failed_read_even_when_model_claims_it(self): | CODE |
| LOW | …aude-cloak/tests/acceptance/test_failure_collection.py | 179 | def test_failed_read_history_requires_exact_target_delta_and_effects(self): | CODE |
| LOW | …aude-cloak/tests/acceptance/test_failure_collection.py | 192 | def test_completed_refusal_cancellation_is_collected_without_erasing_failure(self): | CODE |
| LOW⚡ | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 775 | def test_final_budget_slot_is_a_nonforwarded_attempt(self): | CODE |
| LOW⚡ | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 783 | def test_checksum_verifier_receives_the_original_bytes(self): | CODE |
| LOW⚡ | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 791 | def test_wire_profile_never_exports_text_headers_or_schema_literals(self): | CODE |
| LOW⚡ | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 800 | def test_auxiliary_guard_is_nonretryable_and_does_not_pass_primary_scenarios(self): | CODE |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 25 | def test_stop_details_export_closed_categories_without_explanation_or_unknown_values(self): | CODE |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 49 | def test_previous_request_metadata_stays_private_and_rejects_arbitrary_inputs(self): | CODE |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 75 | def test_collected_failure_journal_forces_failed_report_without_exporting_extra_text(self): | CODE |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 94 | def test_optional_profile_fields_missing_from_old_capture_are_unknown_without_backfill(self): | CODE |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 118 | def test_auto_controls_scope_reuses_the_unchanged_isolated_tail_and_keeps_other_checks_unknown(self): | CODE |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 154 | def test_read_refusal_continuation_rejects_every_transport_model_and_dispatch_gap(self): | CODE |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 172 | def test_explicit_continuation_waits_for_effects_and_advances_without_erasing_failure(self): | CODE |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 208 | def test_fallback_shape_and_models_are_checked_before_forwarding(self): | CODE |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 233 | def test_native_correlation_headers_export_only_presence_roles_and_pseudonyms(self): | CODE |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 262 | def test_tool_result_profile_distinguishes_missing_false_and_true_error_flags(self): | CODE |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 270 | def test_cross_run_header_comparison_ignores_per_run_pseudonym_values(self): | CODE |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 293 | def test_authorized_aggregate_extension_preserves_counts_time_and_legacy_limits(self): | CODE |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 356 | def test_claude_child_matches_rig_access_and_account_without_refresh_or_host_mutation(self): | CODE |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 399 | def test_private_capture_requires_owned_tmpfs_without_symlinks_or_public_files(self): | CODE |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 419 | def test_two_call_tool_result_probe_is_diagnostic_and_preserves_refusal(self): | CODE |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 483 | def test_tool_result_detail_rejects_arbitrary_fields_and_values(self): | CODE |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 494 | def test_tool_result_probe_keeps_the_read_only_proxy_guard(self): | CODE |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 514 | def test_private_pause_preserves_failed_result_and_waits_after_passing_read_phase(self): | CODE |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 538 | def test_native_system_tail_does_not_hide_a_tool_continuation_in_existing_profiles(self): | CODE |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 556 | def test_memory_record_accepts_clear_failure_synonyms_and_markdown_only(self): | CODE |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 570 | def test_memory_record_accepts_short_missing_file_reason_without_recovery_or_retries(self): | CODE |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 584 | def test_missing_or_invalid_phase_files_still_count_and_block_startup_messages(self): | CODE |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 607 | def test_startup_report_passes_only_ready_clients_without_messages(self): | CODE |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 617 | def test_ttl_report_requires_two_ready_wire_completions_and_test_success(self): | CODE |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 630 | def test_ttl_preflight_lists_exact_test_without_authentication(self): | CODE |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 641 | def test_read_target_is_reconstructed_across_sse_fragments_and_never_exported(self): | CODE |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 656 | def test_read_target_rejects_wrong_name_path_and_incomplete_tool_blocks(self): | CODE |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 668 | def test_read_phase_requires_exactly_one_new_invocation_and_expected_target(self): | CODE |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 678 | def test_claude_compaction_reanchors_fingerprint_then_requires_continuity(self): | CODE |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 695 | def test_nested_claude_runtime_launches_and_quits_with_synthetic_auth(self): | CODE |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 718 | def test_nested_claude_runtime_uses_rig_access_without_a_claude_token_store(self): | CODE |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 738 | def test_untracked_source_content_and_names_are_part_of_build_identity(self): | CODE |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 753 | def test_exact_stop_reasons_and_unknown_values_are_redacted(self): | CODE |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 761 | def test_ledger_is_shared_across_runs_and_refuses_unfinished_runs(self): | CODE |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 819 | def test_probe_scope_is_identical_except_tool_spelling(self): | CODE |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 834 | def test_claude_only_report_and_adjacent_profile_comparison(self): | CODE |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 851 | def test_missing_effect_log_fails_build_preflight_before_launch(self): | CODE |
| LOW⚡ | …s/rig-claude-cloak/tests/acceptance/test_acceptance.py | 45 | def test_terminal_then_cancel_is_not_truncation(self): | CODE |
| LOW⚡ | …s/rig-claude-cloak/tests/acceptance/test_acceptance.py | 53 | def test_unknown_compression_rejected(self): | CODE |
| LOW⚡ | …s/rig-claude-cloak/tests/acceptance/test_acceptance.py | 58 | def test_malformed_and_bounded_frames(self): | CODE |
| LOW⚡ | …s/rig-claude-cloak/tests/acceptance/test_acceptance.py | 66 | def test_truncated_compression_is_visible(self): | CODE |
| LOW⚡ | …s/rig-claude-cloak/tests/acceptance/test_acceptance.py | 71 | def test_clean_eof_requires_complete_compression_and_frame(self): | CODE |
| LOW⚡ | …s/rig-claude-cloak/tests/acceptance/test_acceptance.py | 196 | def test_missing_live_phase_cannot_pass(self): | CODE |
| LOW⚡ | …s/rig-claude-cloak/tests/acceptance/test_acceptance.py | 206 | def test_plan_is_offline_and_honest(self): | CODE |
| LOW⚡ | …s/rig-claude-cloak/tests/acceptance/test_acceptance.py | 213 | def test_live_needs_both_consent_and_caps(self): | CODE |
| LOW⚡ | …s/rig-claude-cloak/tests/acceptance/test_acceptance.py | 218 | def test_child_environment_does_not_inherit_credentials(self): | CODE |
| 32 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | crates/rig-core/src/driver/tests.rs | 111 | // ── the fake completion wire ──────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | crates/rig-core/src/driver/tests.rs | 379 | // ── the property the model exists for ─────────────────────────────────── | COMMENT |
| MEDIUM⚡ | crates/rig-core/src/driver/tests.rs | 383 | // ── the non-success funnel: four cells ────────────────────────────────── | COMMENT |
| MEDIUM⚡ | crates/rig-core/src/driver/tests.rs | 385 | // ── the two paths read the same reply the same way ────────────────────── | COMMENT |
| MEDIUM | crates/rig-core/src/driver/tests.rs | 417 | // ── streaming semantics ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/rig-core/src/driver/tests.rs | 758 | // ── observation ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/rig-core/src/driver/tests.rs | 932 | // ── paging ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/rig-core/src/driver/tests.rs | 934 | // ── telemetry ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/rig-core/src/driver/tests.rs | 1067 | // ── request validation ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ates/rig-core/src/providers/gemini/completion/tests.rs | 542 | // ── the GenerateContent wire ──────────────────────────────────────────── | COMMENT |
| MEDIUM | …ig-core/src/providers/gemini/interactions_api/tests.rs | 385 | // ── the Interactions wire ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | …/rig-core/src/providers/gemini/cached_content/tests.rs | 129 | // ── the resource API on a bound provider ──────────────────────────────── | COMMENT |
| MEDIUM | crates/rig-core/src/providers/copilot/wire/tests.rs | 72 | // ── routing ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/rig-core/src/providers/copilot/wire/tests.rs | 193 | // ── the two completion routes, folded from recorded replies ───────────── | COMMENT |
| MEDIUM | crates/rig-core/src/providers/copilot/wire/tests.rs | 277 | // ── the modality wires ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/rig-core/src/providers/copilot/wire/tests.rs | 355 | // ── the configuration is storable data ────────────────────────────────── | COMMENT |
| MEDIUM | …s/rig-core/src/providers/openai/wire/modality/tests.rs | 258 | // ── the dialect-specific modality bodies ──────────────────────────────── | COMMENT |
| MEDIUM | …s/rig-core/src/providers/openai/wire/modality/tests.rs | 398 | // ── reranking ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …-core/src/providers/openai/responses_api/wire/tests.rs | 18 | // ── the cassettes, as bytes ───────────────────────────────────────────── | COMMENT |
| MEDIUM | …-core/src/providers/openai/responses_api/wire/tests.rs | 122 | // ── the property the model exists for ─────────────────────────────────── | COMMENT |
| MEDIUM | …-core/src/providers/openai/responses_api/wire/tests.rs | 227 | // ── what each dialect sends ───────────────────────────────────────────── | COMMENT |
| MEDIUM | …rs/openai/responses_api/wire/tests/provider_options.rs | 76 | // ── the shared section ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | …rs/openai/responses_api/wire/tests/provider_options.rs | 155 | // ── the Responses section ────────────────────────────────────────────── | COMMENT |
| MEDIUM | …rs/openai/responses_api/wire/tests/provider_options.rs | 403 | // ── ChatGPT ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …rs/openai/responses_api/wire/tests/provider_options.rs | 480 | // ── ported from the pull requests these options supersede ────────────── | COMMENT |
| MEDIUM | …rs/openai/responses_api/wire/tests/provider_options.rs | 521 | // ── extras from recorded replies ─────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | CHANGELOG.md | 485 | - *(openrouter)* model listings now report `context_length` and `max_output_tokens`. A stray `#[serde(rename_all = "came | CODE |
| MEDIUM | …ig-cassette/tests/providers/ollama/cassette/agentic.rs | 1 | //! Ollama agentic structured-output coverage. | COMMENT |
| MEDIUM | crates/rig-core/src/providers/anthropic/extension.rs | 286 | /// A token budget the model paces an agentic loop by, at least 20000 | COMMENT |
| MEDIUM | crates/rig-bedrock/CHANGELOG.md | 143 | - *(bedrock)* `CompletionModel::with_guardrail` attaches a [Bedrock guardrail](https://docs.aws.amazon.com/bedrock/lates | CODE |
| MEDIUM | crates/rig-bedrock/src/extension.rs | 162 | /// A [Bedrock guardrail](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails.html) | COMMENT |
| MEDIUM | corpus/ct/src/git_guardrails.rs | 1 | //! CT-02: git guardrails. Every `shell` call is read for the git commands | COMMENT |
| MEDIUM | examples/complex_agentic_loop_claude/src/main.rs | 161 | // Example query that will exercise the complex agentic loop | COMMENT |
| MEDIUM | examples/complex_agentic_loop_claude/src/main.rs | 180 | // Print the chat history to show the agentic loop | COMMENT |
| MEDIUM | test-support/rig-defaults-test-support/tests/removal.rs | 12 | #[path = "../../../src/launcher/plugin/scaffold.rs"] | COMMENT |
| MEDIUM | src/launcher/plugins.toml | 60 | # Summarizing a conversation near the context window, and /compact. | COMMENT |
| MEDIUM | src/launcher/plugin/tests.rs | 50 | // The scaffold's saved component derives from both Bevy crates, which | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | crates/rig-gemini-grpc/src/lib.rs | 20 | //! let transport = GeminiGrpc::new("YOUR_API_KEY").await?; | COMMENT |
| HIGH | crates/rig-qdrant/examples/qdrant_vector_search.rs | 3 | // export OPENAI_API_KEY=<YOUR-API-KEY> | COMMENT |
| HIGH | crates/rig-qdrant/examples/qdrant_vector_search.rs | 3 | // export OPENAI_API_KEY=<YOUR-API-KEY> | COMMENT |
| HIGH | crates/rig-sqlite/src/lib.rs | 1479 | /// let openai = OpenAI::new("YOUR_API_KEY"); | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | Cargo.toml | 108 | # The launcher of the rig-harness agent (`cargo install rig`). It uses only std, | COMMENT |
| MEDIUM | Cargo.toml | 119 | # The rig agent's plugin crates, built on rig-harness's public API. | COMMENT |
| MEDIUM | Cargo.toml | 261 | # version of its app, and rig-harness is the app. `bevy_tasks` is also the | COMMENT |
| MEDIUM | Cargo.toml | 307 | # 0.8.2: `Recording::export_async` (cassette harness). | COMMENT |
| MEDIUM | plugins/rig-claude-cloak/Cargo.toml | 10 | # The offline fixtures and the acceptance harness are for this repository's | COMMENT |
| MEDIUM | examples/gemini_stream_kill_token_count/src/main.rs | 29 | //! To make that robust against all four shapes the consumer needs: | COMMENT |
| MEDIUM | .github/workflows/ci.yaml | 227 | # kernel-only turn test. Builds no rig-harness. | COMMENT |
| MEDIUM | test-support/rig-test-support/src/cache_conformance.rs | 650 | /// move; the ratio is both robust to the noise and the thing that actually | COMMENT |
| MEDIUM | src/launcher/plugins.toml | 9 | # checkout the agent is built from (RIG_SOURCE). The harness | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | plugins/rig-claude-cloak/tests/acceptance/matrix.py | 191 | CODE | |
| LOW | plugins/rig-claude-cloak/tests/acceptance/matrix.py | 205 | CODE | |
| LOW | plugins/rig-claude-cloak/tests/acceptance/matrix.py | 219 | CODE | |
| LOW | plugins/rig-claude-cloak/tests/acceptance/matrix.py | 347 | CODE | |
| LOW | …aude-cloak/tests/acceptance/test_failure_collection.py | 92 | CODE | |
| LOW | …aude-cloak/tests/acceptance/test_failure_collection.py | 158 | CODE | |
| LOW | plugins/rig-claude-cloak/tests/acceptance/run.py | 70 | CODE | |
| LOW | plugins/rig-claude-cloak/tests/acceptance/audit.py | 74 | CODE | |
| LOW | plugins/rig-claude-cloak/tests/acceptance/audit.py | 424 | CODE | |
| LOW | plugins/rig-claude-cloak/tests/acceptance/audit.py | 469 | CODE | |
| LOW | plugins/rig-claude-cloak/tests/acceptance/audit.py | 265 | CODE | |
| LOW | plugins/rig-claude-cloak/tests/acceptance/proxy.py | 34 | CODE | |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 208 | CODE | |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 494 | CODE | |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 584 | CODE | |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_comparison.py | 678 | CODE | |
| LOW | plugins/rig-claude-cloak/tests/acceptance/comparison.py | 235 | CODE | |
| LOW | …s/rig-claude-cloak/tests/acceptance/test_acceptance.py | 229 | CODE | |
| LOW | …rig-claude-cloak/tests/acceptance/test_refusal_path.py | 103 | CODE | |
| LOW | scripts/check-dependency-floors.py | 172 | CODE | |
| LOW | scripts/check-dependency-floors.py | 261 | CODE | |
| LOW | scripts/test_dependency_floors.py | 27 | CODE | |
| LOW | scripts/test_dependency_floors.py | 60 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | crates/rig-core/src/providers/anthropic/wire.rs | 727 | let session = self.provider.dialect.quirks.session_header.map(|name| { | CODE |
| CRITICAL | crates/rig-core/src/providers/openai/wire/modality.rs | 530 | let field = self.provider.dialect.quirks.embedding.dimensions.name()?; | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …s/rig-cassette/tests/providers/groq/extractor_usage.rs | 60 | anyhow::ensure!(person.name.as_deref() == Some("John Doe")); | CODE |
| LOW | …s/rig-cassette/tests/providers/groq/extractor_usage.rs | 108 | anyhow::ensure!(response.output.street.as_deref() == Some("123 Main St")); | CODE |
| LOW | …ig-cassette/tests/providers/chatgpt/extractor_usage.rs | 54 | anyhow::ensure!(person.name.as_deref() == Some("John Doe")); | CODE |
| LOW | …ig-cassette/tests/providers/chatgpt/extractor_usage.rs | 101 | anyhow::ensure!(response.output.street.as_deref() == Some("123 Main St")); | CODE |
| LOW | …ig-cassette/tests/providers/mistral/extractor_usage.rs | 54 | anyhow::ensure!(person.name.as_deref() == Some("John Doe")); | CODE |
| LOW | …ig-cassette/tests/providers/mistral/extractor_usage.rs | 98 | anyhow::ensure!(response.output.street.as_deref() == Some("123 Main St")); | CODE |
| LOW | …s/rig-core/src/providers/openai/responses_api/tests.rs | 22 | crate::providers::openai::OpenAIConfig::new("dummy-key").responses(model) | CODE |
| LOW | crates/rig-core/src/completion/request/tests.rs | 228 | additional_props.insert("author".to_string(), "John Doe".to_string()); | CODE |
| LOW⚡ | …s/rig-claude-cloak/tests/acceptance/test_acceptance.py | 254 | fake_token = "sk-ant-" + "synthetic_12345678" | CODE |
| LOW⚡ | …s/rig-claude-cloak/tests/acceptance/test_acceptance.py | 256 | leaked = flow(100, fake_token) | CODE |
| LOW⚡ | …s/rig-claude-cloak/tests/acceptance/test_acceptance.py | 264 | authenticated.request.headers["authorization"] = "Bearer " + fake_token | CODE |
| LOW⚡ | …s/rig-claude-cloak/tests/acceptance/test_acceptance.py | 267 | self.assertNotIn(fake_token, (root / "audit.jsonl").read_text()) | CODE |
| LOW | plugins/rig-claude-cloak/src/transport/tests.rs | 179 | credentials: Some(("fake-token".into(), None)), | CODE |
| LOW | plugins/rig-claude-cloak/src/transport/tests.rs | 716 | credentials: Some(("fake-token".into(), None)), | CODE |
| LOW | tests/providers/azure/structured_output.rs | 30 | result.name == "John Doe", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | plugins/rig-claude-cloak/tests/acceptance/run.py | 235 | except (OSError, ValueError, TypeError): | CODE |
| HIGH | plugins/rig-claude-cloak/tests/acceptance/audit.py | 142 | except FileExistsError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/check-dependency-floors.py | 32 | CODE | |
| LOW | scripts/check-dependency-floors.py | 36 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | plugins/rig-claude-cloak/tests/acceptance/matrix.py | 31 | CODE |