Semantic version control => entity-level diffs, blame, and impact analysis on top of git. 28 languages via tree-sitter. Built for coding agents.
This report summarizes scanner evidence for Ataraxy-Labs/sem, a Rust project with 3,406 GitHub stars. SynthScan examined 217,802 lines of code across 526 source files, recording 868 pattern matches distributed across 16 syntactic categories. The legacy adjusted pattern signal is 5.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? 716 finding(s).
Are imports declared and package/API names verified? 14 finding(s).
Are wrappers, guards, and repeated structures necessary? 197 finding(s).
Which changes need focused human review? 868 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 868 distinct pattern matches across 16 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 | uninstall.sh | 1 | #!/bin/sh | COMMENT |
| LOW | install.sh | 1 | #!/bin/sh | COMMENT |
| LOW | crates/sem-plugin/src/bindings.rs | 981 | pub use alloc_crate::alloc; | COMMENT |
| LOW | crates/sem-mcp/tests/mcp_protocol.rs | 1 | //! RED tests proving three MCP server gaps, run against the real `sem-mcp` | COMMENT |
| LOW | crates/sem-mcp/src/cache.rs | 1 | //! Thin re-export of `sem_core::persist::disk_cache`. | COMMENT |
| LOW | crates/sem-mcp/src/cache.rs | 21 | //! `DiskCache` implementation here used to. | COMMENT |
| LOW | crates/sem-mcp/src/cache.rs | 41 | use rusqlite::{params, Connection, OptionalExtension, Transaction}; | COMMENT |
| LOW | crates/sem-mcp/src/cloud.rs | 1 | //! Cloud routing for the MCP tools. | COMMENT |
| LOW | crates/sem-mcp/src/lib.rs | 81 | COMMENT | |
| LOW | crates/sem-mcp/src/agent_review.rs | 1 | //! Client for the sem-cloud "agent review listener" API. | COMMENT |
| LOW | crates/sem-mcp/src/agent_review.rs | 121 | } | COMMENT |
| LOW | crates/sem-mcp/src/agent_review.rs | 161 | /// existing `agent_review::unanswerable_result` / `agent_review::review_gone_result` | COMMENT |
| LOW | crates/sem-mcp/src/agent_review.rs | 261 | let truncated: String = text.chars().take(max_chars).collect(); | COMMENT |
| LOW | crates/sem-mcp/src/server.rs | 181 | /// Not redundant with [`CachedGraph`]: this is a genuinely lighter disk-load | COMMENT |
| LOW | crates/sem-mcp/src/server.rs | 201 | /// re-triggering the build. | COMMENT |
| LOW | crates/sem-mcp/src/server.rs | 541 | fn read_file_at(abs_path: &Path, display_path: &str) -> Result<String, String> { | COMMENT |
| LOW | crates/sem-mcp/src/server.rs | 3141 | ) -> Result<CallToolResult, rmcp::ErrorData> { | COMMENT |
| LOW | crates/sem-mcp/src/server.rs | 4441 | /// each redundantly rebuilt the whole graph (thundering herd). Fires many | COMMENT |
| LOW | crates/sem-mcp/src/server.rs | 4521 | COMMENT | |
| LOW | crates/sem-mcp/src/watch.rs | 1 | //! Filesystem watcher that keeps the MCP server's in-memory entity graph hot. | COMMENT |
| LOW | crates/sem-mcp/src/review_protocol.rs | 1 | //! Centralized "loop discipline" text for the review-listener tools | COMMENT |
| LOW | crates/sem-cli/tests/arch_diff_scale.rs | 1 | //! `sem arch-diff` memory on a huge repository with a tiny change. | COMMENT |
| LOW | crates/sem-cli/tests/impact_direct_deps.rs | 461 | ); | COMMENT |
| LOW | crates/sem-cli/tests/check_cli.rs | 1 | //! `sem check` end to end on fixture projects. The property every case asserts: | COMMENT |
| LOW | crates/sem-cli/tests/arch_diff_budget.rs | 1 | //! `sem arch-diff --budget N` bounds the command's wall time. | COMMENT |
| LOW | crates/sem-cli/tests/cli_simplify.rs | 1 | //! The simplified command line: core verbs, flags for their variations, and | COMMENT |
| LOW | crates/sem-cli/tests/review_listen_dry_run.rs | 1 | //! `sem review listen --dry-run` — drives the real `sem` binary against a | COMMENT |
| LOW | crates/sem-cli/tests/callers_soundness_cli.rs | 1 | //! `sem callers` never answers a confident "none" it cannot back. | COMMENT |
| LOW | crates/sem-cli/tests/support/mod.rs | 1 | //! Shared stub-server plumbing for `sem`'s cloud-facing integration tests | COMMENT |
| LOW | crates/sem-cli/src/telemetry.rs | 1 | //! Anonymous command-usage telemetry — three modes, local by default. | COMMENT |
| LOW | crates/sem-cli/src/telemetry.rs | 61 | COMMENT | |
| LOW | crates/sem-cli/src/build_cache.rs | 1 | //! The build plane's warm-cache tier, and `index.sem`'s writer ( | COMMENT |
| LOW | crates/sem-cli/src/build_cache.rs | 41 | // PartialCache` had here before moved its definition to `sem-core`. | COMMENT |
| LOW | crates/sem-cli/src/build_cache.rs | 121 | /// experiment measured every other verb byte-identical and equally fast from | COMMENT |
| LOW | crates/sem-cli/src/hyperlinks.rs | 1 | //! Optional OSC8 terminal hyperlinks for entity references. | COMMENT |
| LOW | crates/sem-cli/src/main.rs | 241 | /// Entity name(s), each optionally as "type name" (e.g. "function parseConfig"). | COMMENT |
| LOW | crates/sem-cli/src/main.rs | 301 | /// Listing: every kind except these (repeatable). Example: sem find --in src --except import | COMMENT |
| LOW | crates/sem-cli/src/main.rs | 321 | COMMENT | |
| LOW | crates/sem-cli/src/main.rs | 361 | /// Where does this text appear? Regex search, rg-style `file:line:text` | COMMENT |
| LOW | crates/sem-cli/src/main.rs | 381 | /// Pattern to search for, repeatable (rg-style `-e p1 -e p2`); each | COMMENT |
| LOW | crates/sem-cli/src/main.rs | 401 | line_number: bool, | COMMENT |
| LOW | crates/sem-cli/src/main.rs | 421 | #[command(verbatim_doc_comment, hide = true)] | COMMENT |
| LOW | crates/sem-cli/src/main.rs | 461 | /// Extra laws files (the promises format), besides `.sem/promises/*.json` at head. | COMMENT |
| LOW | crates/sem-cli/src/main.rs | 481 | max_items: usize, | COMMENT |
| LOW | crates/sem-cli/src/main.rs | 501 | #[arg(long, default_value = "auto", value_parser = ["auto", "full", "diff"], hide = true)] | COMMENT |
| LOW | crates/sem-cli/src/main.rs | 521 | #[arg(long, conflicts_with_all = ["view", "html"])] | COMMENT |
| LOW | crates/sem-cli/src/main.rs | 541 | #[arg(long, default_value_t = 8)] | COMMENT |
| LOW | crates/sem-cli/src/main.rs | 561 | #[arg(long, default_value_t = 16)] | COMMENT |
| LOW | crates/sem-cli/src/main.rs | 621 | COMMENT | |
| LOW | crates/sem-cli/src/main.rs | 741 | }, | COMMENT |
| LOW | crates/sem-cli/src/main.rs | 801 | /// Only include files with these extensions (e.g. --file-exts .ts .tsx) | COMMENT |
| LOW | crates/sem-cli/src/main.rs | 821 | /// Show each entity's header under its row: the signature up to the | COMMENT |
| LOW | crates/sem-cli/src/main.rs | 841 | /// Output as JSON (shorthand for --format json) | COMMENT |
| LOW | crates/sem-cli/src/main.rs | 901 | /// Show lifetime diff statistics | COMMENT |
| LOW | crates/sem-cli/src/main.rs | 921 | resident: bool, | COMMENT |
| LOW | crates/sem-cli/src/main.rs | 941 | Logout, | COMMENT |
| LOW | crates/sem-cli/src/main.rs | 961 | action: TelemetryAction, | COMMENT |
| LOW | crates/sem-cli/src/main.rs | 981 | #[command(hide = true)] | COMMENT |
| LOW | crates/sem-cli/src/main.rs | 1021 | /// Where is my code stored? Repos indexed on the account and local caches. Example: sem cloud repos | COMMENT |
| LOW | crates/sem-cli/src/main.rs | 1041 | #[command(hide = true)] | COMMENT |
| 534 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | bench/agent-accuracy.py | 28 | # ── Config ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | bench/agent-accuracy.py | 65 | # ── Helpers ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | bench/agent-accuracy.py | 130 | # ── Scoring ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | bench/agent-accuracy.py | 183 | # ── API ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | bench/agent-accuracy.py | 237 | # ── Main ───────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | bench/agent-accuracy.py | 320 | # ── Summary ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | bench/agent-accuracy.py | 357 | # ── Write results ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | bench/agent-accuracy.py | 373 | # ── Update HTML ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-cloud-client/src/lib.rs | 23 | // ─── Credentials ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-cloud-client/src/lib.rs | 67 | // ─── Cloud API Response Types ──────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-cloud-client/src/lib.rs | 224 | // ─── Repo Cache ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-cloud-client/src/lib.rs | 329 | // ─── URL Normalization ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-cloud-client/src/lib.rs | 380 | // ─── CloudClient ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-mcp/src/agent_review.rs | 42 | // ─── Config ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-mcp/src/agent_review.rs | 90 | // ─── Errors ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-mcp/src/agent_review.rs | 165 | // ─── Wire types ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-mcp/src/agent_review.rs | 301 | // ─── Client ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-cli/src/commands/cloud.rs | 26 | // ─── Credentials ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-cli/src/commands/cloud.rs | 70 | // ─── Cloud conversion nudge ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-cli/src/commands/cloud.rs | 148 | // ─── sem login ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-cli/src/commands/cloud.rs | 212 | // ─── sem login --github ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-cli/src/commands/cloud.rs | 365 | // ─── sem logout ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-cli/src/commands/cloud.rs | 413 | // ─── sem whoami ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-cli/src/commands/cloud.rs | 470 | // ─── Cloud API Response Types ──────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-cli/src/commands/cloud.rs | 616 | // ─── Repo Cache ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-cli/src/commands/cloud.rs | 681 | // ─── URL Normalization ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-cli/src/commands/cloud.rs | 750 | // ─── CloudClient ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-cli/src/commands/cloud.rs | 1261 | // ─── try_cloud_* helpers ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-cli/src/commands/cloud.rs | 1750 | // ─── Helper to convert CloudEntityBrief to JSON ───────────────────────── | COMMENT |
| MEDIUM | crates/sem-cli/src/commands/update.rs | 22 | // ─── Update notification ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-cli/src/commands/update.rs | 154 | // ─── sem update ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-cli/src/commands/consent.rs | 22 | // ─── Consent state ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-cli/src/commands/consent.rs | 108 | // ─── Public consent queries (used by the cloud routing path) ──────────────── | COMMENT |
| MEDIUM | crates/sem-cli/src/commands/consent.rs | 146 | // ─── Outbound request ledger ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-cli/src/commands/consent.rs | 174 | // ─── Helpers ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-cli/src/commands/consent.rs | 228 | // ─── sem cloud enable ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-cli/src/commands/consent.rs | 319 | // ─── sem cloud share ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-cli/src/commands/consent.rs | 404 | // ─── sem cloud status ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-cli/src/commands/consent.rs | 458 | // ─── sem cloud preview ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-cli/src/commands/consent.rs | 517 | // ─── sem cloud log ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-cli/src/commands/consent.rs | 557 | // ─── sem cloud never ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-cli/src/commands/consent.rs | 579 | // ─── sem cloud forget ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-cli/src/commands/consent.rs | 622 | // ─── Passive discovery tip ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-cli/src/commands/repos.rs | 54 | // ─── Cloud section ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-cli/src/commands/repos.rs | 128 | // ─── Local section ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-cli/src/commands/repos.rs | 294 | // ─── Output helpers ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-cli/src/commands/check/python.rs | 122 | // ── type checking ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-cli/src/commands/check/python.rs | 394 | // ── early cutoff ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-cli/src/commands/check/python.rs | 517 | // ── pytest ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-core/tests/scope_resolve_bench.rs | 885 | // ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | crates/sem-core/tests/scope_resolve_bench.rs | 887 | // ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | crates/sem-core/tests/scope_resolve_bench.rs | 1229 | // ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | crates/sem-core/tests/scope_resolve_bench.rs | 1231 | // ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | crates/sem-core/src/parser/test_detect.rs | 84 | // ── Built-in directory patterns ────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-core/src/parser/test_detect.rs | 126 | // ── File-name patterns ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-core/src/parser/test_detect.rs | 136 | // ── Negative cases ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-core/src/parser/test_detect.rs | 149 | // ── Custom directories ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-core/src/parser/graph.rs | 12449 | // ── is_test_entity / filter_test_entities tests ───────────────────── | COMMENT |
| MEDIUM | crates/sem-core/src/parser/plugins/json.rs | 777 | // ───────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sem-core/src/parser/plugins/json.rs | 779 | // ───────────────────────────────────────────────────────────────────────── | COMMENT |
| 25 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | agent-skill/guard/sem-guard.py | 76 | except Exception: | CODE |
| HIGH | agent-skill/guard/sem-guard.py | 245 | except Exception: | CODE |
| HIGH | agent-skill/badge/sem-activity.py | 108 | except Exception: | CODE |
| HIGH | agent-skill/badge/sem-activity.py | 133 | except Exception: | CODE |
| HIGH | agent-skill/badge/sem-activity.py | 126 | except Exception: | CODE |
| HIGH | agent-skill/badge/sem-live.py | 297 | except Exception: | CODE |
| HIGH | witness/rt/witness_rt.py | 307 | except Exception: | CODE |
| HIGH | witness/rt/witness_rt.py | 287 | except Exception: | CODE |
| HIGH | witness/rt/witness_rt.py | 296 | except Exception: | CODE |
| HIGH | witness/rt/witness_rt.py | 376 | except Exception: | CODE |
| HIGH | witness/rt/witness_rt.py | 130 | except Exception: | CODE |
| HIGH | benchmarks/shared-mcp/run.py | 93 | except ProcessLookupError: | CODE |
| HIGH | scripts/system/py_trace/sitecustomize.py | 74 | except OSError: | CODE |
| HIGH | scripts/system/py_trace/sitecustomize.py | 65 | except OSError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | crates/sem-cli/tests/qualified_names_cli.rs | 62 | r#"def create_reverse_many_to_one_manager(superclass): | CODE |
| LOW | crates/sem-cli/tests/qualified_names_cli.rs | 70 | def create_forward_many_to_many_manager(superclass): | CODE |
| LOW | pi/extensions/pi-sem.ts | 89 | export async function startServersAndRegisterTools( | CODE |
| LOW | pi/src/transaction/protocol-generalization.ts | 179 | export function describeRepositoryCapabilities( | CODE |
| LOW⚡ | pi/src/transaction/simple/test_cpp_validation.py | 11 | def test_cmake_and_ctest_reach_resource_policy(self): | CODE |
| LOW⚡ | pi/src/transaction/simple/test_cpp_validation.py | 19 | def test_rejections_advertise_capabilities_without_execution(self): | CODE |
| LOW | pi/src/transaction/simple/test_junit_reports.py | 8 | def test_success_unavailable_and_other_runners_do_not_collect(self): | CODE |
| LOW | pi/src/transaction/simple/test_junit_reports.py | 17 | def test_failure_details_do_not_change_verdict_or_provenance(self): | CODE |
| LOW | pi/src/transaction/simple/test_junit_reports.py | 30 | def test_report_failure_does_not_hide_test_failure(self): | CODE |
| LOW | pi/src/transaction/simple/test_junit_reports.py | 47 | def test_fresh_reports_only_without_extracting_links(self): | CODE |
| LOW | pi/src/transaction/simple/test_junit_reports.py | 58 | def test_bad_xml_does_not_erase_other_evidence(self): | CODE |
| LOW | pi/src/transaction/simple/test_report_presentation.py | 9 | def test_full_report_retained_but_response_omits_repeated_stack_details(self): | CODE |
| LOW | pi/src/transaction/simple/test_jest_evidence.py | 7 | def test_named_assertions_include_values_and_source(self): | CODE |
| LOW | pi/src/transaction/simple/test_jest_evidence.py | 24 | def test_assertion_context_is_bounded(self): | CODE |
| LOW⚡ | pi/src/transaction/simple/test_validation_resources.py | 8 | def test_bazel_wrappers_keep_targets_and_test_args(self): | CODE |
| LOW⚡ | pi/src/transaction/simple/test_validation_resources.py | 15 | def test_non_bazel_commands_unchanged(self): | CODE |
| LOW⚡ | pi/src/transaction/simple/test_validation_resources.py | 18 | def test_conflicting_resource_flags_are_rejected(self): | CODE |
| LOW | pi/src/transaction/simple/test_validation_evidence.py | 9 | def test_success_is_smaller_and_exactly_recoverable(self): | CODE |
| LOW | pi/src/transaction/simple/test_validation_evidence.py | 25 | def test_failures_are_bounded_and_exactly_recoverable(self): | CODE |
| LOW | pi/src/transaction/simple/test_validation_evidence.py | 44 | def test_unknown_is_not_compacted(self): | CODE |
| LOW | pi/src/transaction/simple/test_validation_evidence.py | 52 | def test_content_identity_and_corruption(self): | CODE |
| LOW | pi/src/transaction/simple/test_patch_delta.py | 29 | def test_only_changed_file_is_touched(self): | CODE |
| LOW | pi/src/transaction/simple/test_patch_delta.py | 40 | def test_binary_rename_create_and_delete(self): | CODE |
| LOW | pi/src/transaction/simple/test_patch_delta.py | 52 | def test_bad_previous_patch_fails_without_worktree_changes(self): | CODE |
| LOW | pi/src/transaction/simple/test_patch_delta.py | 61 | def test_real_index_is_unchanged(self): | CODE |
| LOW | pi/src/transaction/simple/test_gradle_evidence.py | 7 | def test_parameterized_failure_keeps_assertion_and_location(self): | CODE |
| LOW | pi/src/transaction/simple/test_gradle_evidence.py | 19 | def test_plain_failed_word_is_not_a_gradle_test(self): | CODE |
| LOW⚡ | pi/src/transaction/simple/test_check_command.py | 11 | def test_make_recipe_metacharacters_fail_before_execution(self): | CODE |
| LOW⚡ | pi/src/transaction/simple/test_check_command.py | 17 | def test_direct_regex_remains_single_argument(self): | CODE |
| LOW⚡ | pi/src/transaction/simple/test_check_command.py | 20 | def test_python_module_preserves_interpreter_and_test_selection(self): | CODE |
| LOW⚡ | pi/src/transaction/simple/test_check_command.py | 26 | def test_entrypoint_unchanged(self): | CODE |
| LOW⚡ | pi/src/transaction/simple/test_check_command.py | 29 | def test_no_arbitrary_python_or_shell(self): | CODE |
| LOW⚡ | pi/src/transaction/simple/test_check_command.py | 37 | def test_invalid_quoting_is_unavailable_not_exception(self): | CODE |
| LOW | pi/src/transaction/simple/test_checker_recovery.py | 14 | def test_timeout_preserves_diagnostics_and_retry_works(self): | CODE |
| LOW⚡ | pi/src/transaction/simple/test_junit_evidence.py | 5 | def test_long_assertion_locates_difference_outside_prefix(self): | CODE |
| LOW⚡ | pi/src/transaction/simple/test_junit_evidence.py | 15 | def test_failure_message_and_trace_without_rerunning(self): | CODE |
| LOW⚡ | pi/src/transaction/simple/test_junit_evidence.py | 23 | def test_bounded_and_incomplete_reports_are_explicit(self): | CODE |
| LOW⚡ | pi/src/transaction/simple/test_junit_evidence.py | 29 | def test_identical_parameterized_failures_keep_counts_and_test_identity(self): | CODE |
| LOW⚡ | pi/src/transaction/simple/test_junit_evidence.py | 37 | def test_success_report_never_becomes_a_verdict(self): | CODE |
| LOW⚡ | pi/src/transaction/simple/test_junit_evidence.py | 42 | def test_rejects_oversized_and_entity_payloads(self): | CODE |
| LOW⚡ | pi/src/transaction/simple/test_junit_evidence.py | 47 | def test_large_diagnostics_are_marked_truncated(self): | CODE |
| LOW | pi/src/transaction/simple/test_check_timings.py | 14 | def test_timeout_preserves_output_and_restores_checker(self): | CODE |
| LOW | pi/src/transaction/simple/test_check_timings.py | 35 | def test_timings_preserve_command_output_and_verdict(self): | CODE |
| LOW | pi/src/transaction/simple/test_cpu_affinity.py | 11 | def test_hostname_is_short_stable_and_locally_resolvable(self): | CODE |
| LOW | pi/src/transaction/simple/test_maven_validation.py | 5 | def test_preserves_targets_and_forces_offline(self): | CODE |
| LOW | pi/src/transaction/simple/test_maven_validation.py | 10 | def test_offline_is_not_duplicated(self): | CODE |
| LOW | pi/src/tools/sem-read.ts | 403 | function trimTrailingUnpairedSurrogate(s: string): string { | CODE |
| LOW | pi/src/tools/weave-edit.ts | 365 | function formatVerificationFailure(params: OneWeaveEditParams, entity: Entity, reason: string, coordination: Coordinatio | CODE |
| LOW | pi/src/tools/weave-edit.ts | 387 | function formatIdentityChangeFailure( | CODE |
| LOW | pi/src/tools/weave-edit.ts | 465 | function formatMergeConflictFailure( | CODE |
| LOW | pi/src/tools/weave-edit.ts | 489 | function formatMergeDroppedOursFailure( | CODE |
| LOW | pi/src/tools/weave-edit.ts | 536 | function formatWriteWindowLostFailure( | CODE |
| LOW | pi/src/tools/weave-edit.ts | 583 | function formatRollbackWindowLostFailure( | CODE |
| LOW | pi/src/tools/weave-edit.ts | 1311 | async function resyncCoordinationAfterRollback( | CODE |
| LOW | pi/src/tools/internal/entities.ts | 230 | function parentNameWouldDisambiguate(candidates: Entity[]): boolean { | CODE |
| LOW | pi/src/bridge/bash-audit.ts | 108 | function stripHeredocsAndHereStrings(command: string): string { | CODE |
| LOW | pi/src/codemode/tool.ts | 142 | export function buildRoutinesPromptSection(cwd: string, sessionSavedRoutines?: ReadonlySet<string>): string { | CODE |
| LOW | pi/src/codemode/tool.ts | 207 | export function buildSystemPromptAddendum( | CODE |
| LOW | benchmarks/dependency-accuracy/run_benchmark.py | 442 | def pycg_normalize_constructors(edges, truth_edges): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | agent-skill/guard/sem-guard.py | 66 | except Exception: | CODE |
| LOW | agent-skill/guard/sem-guard.py | 76 | except Exception: | CODE |
| LOW | agent-skill/guard/sem-guard.py | 187 | except Exception: | CODE |
| LOW | agent-skill/guard/sem-guard.py | 245 | except Exception: | CODE |
| MEDIUM | agent-skill/guard/sem-guard.py | 62 | def load_state(): | CODE |
| MEDIUM | agent-skill/guard/sem-guard.py | 70 | def save_state(s): | CODE |
| LOW | agent-skill/badge/statusline-sem.py | 49 | except Exception: | CODE |
| LOW | agent-skill/badge/statusline-sem.py | 70 | except Exception: | CODE |
| LOW | agent-skill/badge/statusline-sem.py | 85 | except Exception: | CODE |
| MEDIUM | agent-skill/badge/statusline-sem.py | 46 | def read_lifetime(): | CODE |
| MEDIUM | agent-skill/badge/statusline-sem.py | 67 | def main(): | CODE |
| LOW | agent-skill/badge/sem-activity.py | 39 | except Exception: | CODE |
| LOW | agent-skill/badge/sem-activity.py | 62 | except Exception: | CODE |
| LOW | agent-skill/badge/sem-activity.py | 108 | except Exception: | CODE |
| LOW | agent-skill/badge/sem-activity.py | 126 | except Exception: | CODE |
| LOW | agent-skill/badge/sem-activity.py | 133 | except Exception: | CODE |
| MEDIUM | agent-skill/badge/sem-activity.py | 36 | def main(): | CODE |
| LOW | agent-skill/badge/sem-live.py | 59 | except Exception: | CODE |
| LOW | agent-skill/badge/sem-live.py | 116 | except Exception: | CODE |
| LOW | agent-skill/badge/sem-live.py | 138 | except Exception: | CODE |
| LOW | agent-skill/badge/sem-live.py | 261 | except Exception: | CODE |
| LOW | agent-skill/badge/sem-live.py | 297 | except Exception: | CODE |
| MEDIUM | agent-skill/badge/sem-live.py | 258 | def term_width(): | CODE |
| LOW | witness/deps.py | 34 | except Exception: | CODE |
| LOW | witness/propose.py | 80 | except Exception: | CODE |
| LOW | witness/propose.py | 156 | except Exception: | CODE |
| LOW | witness/rt/witness_rt.py | 101 | except Exception: | CODE |
| LOW | witness/rt/witness_rt.py | 130 | except Exception: | CODE |
| LOW | witness/rt/witness_rt.py | 222 | except Exception: | CODE |
| LOW | witness/rt/witness_rt.py | 287 | except Exception: | CODE |
| LOW | witness/rt/witness_rt.py | 296 | except Exception: | CODE |
| LOW | witness/rt/witness_rt.py | 307 | except Exception: | CODE |
| LOW | witness/rt/witness_rt.py | 376 | except Exception: | CODE |
| LOW | witness/rt/witness_rt.py | 410 | except Exception: | CODE |
| LOW | witness/rt/witness_rt.py | 491 | except Exception: | CODE |
| LOW | .claude/hooks/sem-first.sh | 20 | except Exception: | CODE |
| LOW | pi/src/transaction/simple/junit_reports.py | 29 | except Exception as error: | CODE |
| LOW | scripts/system/trace_edges.py | 83 | except Exception: | CODE |
| LOW | scripts/system/trace_edges.py | 166 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | witness/propose.py | 126 | parts += ["## Your previous harness", "```", previous, "```", "## What happened", feedback or "", | CODE |
| MEDIUM | witness/rt/witness_rt.py | 38 | # the runtime's own references: a harness may replace external contracts | COMMENT |
| MEDIUM | witness/rt/witness_rt.py | 50 | # entry call starts, so no harness code that runs before it can ever see it | COMMENT |
| MEDIUM | witness/rt/witness_rt.py | 268 | # harness code may RECEIVE the canary (a contract stub such as | COMMENT |
| MEDIUM | witness/rt/witness_rt.py | 421 | # only repo or harness code gets stubs: an installed library probing | COMMENT |
| MEDIUM | witness/rt/witness_rt.py | 461 | # ------------------------------------------------------------------ repo code patched by the harness? | COMMENT |
| MEDIUM | witness/rt/witness_rt.py | 482 | # values the harness provided as an external module (W.stub_module) are | COMMENT |
| MEDIUM | witness/rt/witness_rt.py | 530 | # pure computation is not an external boundary: a harness may fake the | COMMENT |
| MEDIUM | witness/rt/witness_rt.py | 545 | # ------------------------------------------------------------------ the harness API | COMMENT |
| MEDIUM | crates/sem-core/src/parser/facts_store.rs | 1194 | /// from `facts.path`'s extension — cheaper, and robust to a future | COMMENT |
| MEDIUM | scripts/promises-hook.sh | 5 | # promises-hook.sh <file>... # any harness: pass the edited paths | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | witness/deps.py | 77 | cmd = ("pip install -q --target /tmp/uv uv && PYTHONPATH=/tmp/uv python -m uv pip install -q --python python3 " | CODE |
| HIGH | witness/propose.py | 54 | process.chdir('<literal path>'), process.argv = [...] / process.argv.push(...) (CLI contracts) | CODE |
| HIGH | witness/sandbox.py | 61 | copy = "cd /src && tar -cf - --exclude=.git --exclude=node_modules $(ls -A /src | grep -vx .git) | tar -C /work | CODE |
| HIGH⚡ | pi/src/transaction/simple/test_cpp_validation.py | 20 | for command in ['cmake --build build && ctest', 'unknown-command', 'ctest | head']: | CODE |
| HIGH⚡ | pi/src/transaction/simple/test_check_command.py | 33 | 'pytest && echo yes','pytest | tee out',''): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | CONTRIBUTING.md | 34 | ### Step 1: Add the tree-sitter dependency | COMMENT |
| LOW | CONTRIBUTING.md | 45 | ### Step 2: Add a getter function | COMMENT |
| LOW | CONTRIBUTING.md | 61 | ### Step 3: Define the language config | COMMENT |
| LOW | CONTRIBUTING.md | 85 | ### Step 4: Register the config | COMMENT |
| LOW | CONTRIBUTING.md | 96 | ### Step 5: Register the extensions | COMMENT |
| LOW | CONTRIBUTING.md | 107 | ### Step 6: Add a test | COMMENT |
| LOW | CONTRIBUTING.md | 140 | ### Step 7: Run tests | COMMENT |
| LOW | crates/sem-core/src/parser/graph.rs | 6771 | // Step 1: every file's scan — reused from cache when eligible and its own | COMMENT |
| LOW | crates/sem-core/src/parser/graph.rs | 6821 | // Step 2: aggregate export-side data from *every* scan (green or red — | COMMENT |
| LOW | crates/sem-core/src/parser/graph.rs | 6888 | // Step 3: fingerprint every file that contributes to the export surface, | COMMENT |
| LOW | crates/sem-core/src/parser/graph.rs | 6916 | // Step 4: decide GREEN/RED per file, using the cache's *previous* read | COMMENT |
| LOW | crates/sem-core/src/parser/graph.rs | 6932 | // Step 5: build entries for every RED file. GREEN files are untouched — | COMMENT |
| LOW | crates/sem-core/src/parser/graph.rs | 7121 | // Step 6: apply. Sequential — `HashMap::insert`/`remove` on the one | COMMENT |
| LOW⚡ | benchmarks/dependency-accuracy/run_benchmark.py | 188 | # Step 1: Index the project (may already be indexed, that's fine) | COMMENT |
| LOW⚡ | benchmarks/dependency-accuracy/run_benchmark.py | 194 | # Step 2: Parse all files to build entity map and call sites | COMMENT |
| LOW⚡ | benchmarks/dependency-accuracy/run_benchmark.py | 213 | # Step 3: For each call site, query stack-graphs and resolve | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | agent-skill/guard/sem-guard.py | 173 | CODE | |
| LOW | agent-skill/badge/statusline-sem.py | 67 | CODE | |
| LOW | agent-skill/badge/sem-activity.py | 36 | CODE | |
| LOW | agent-skill/badge/sem-live.py | 51 | CODE | |
| LOW | witness/anticheat.py | 53 | CODE | |
| LOW | witness/anticheat.py | 143 | CODE | |
| LOW | witness/rt/witness_rt.py | 107 | CODE | |
| LOW | witness/rt/witness_rt.py | 262 | CODE | |
| LOW | witness/rt/witness_rt.py | 477 | CODE | |
| LOW | pi/src/transaction/simple/junit_reports.py | 37 | CODE | |
| LOW | pi/src/transaction/simple/container-check-v8.py | 57 | CODE | |
| LOW | pi/src/transaction/simple/container-check-v8.py | 174 | CODE | |
| LOW | pi/src/transaction/simple/junit_evidence.py | 25 | CODE | |
| LOW | pi/src/transaction/simple/test_check_timings.py | 35 | CODE | |
| LOW | benchmarks/shared-mcp/run.py | 99 | CODE | |
| LOW | benchmarks/dependency-accuracy/run_benchmark.py | 186 | CODE | |
| LOW | benchmarks/dependency-accuracy/run_benchmark.py | 236 | CODE | |
| LOW | benchmarks/dependency-accuracy/run_benchmark.py | 275 | CODE | |
| LOW | benchmarks/dependency-accuracy/run_benchmark.py | 343 | CODE | |
| LOW | scripts/system/trace_edges.py | 109 | CODE | |
| LOW | scripts/system/trace_edges.py | 157 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | crates/sem-core/src/parser/graph.rs | 6771 | // Step 1: every file's scan — reused from cache when eligible and its own | COMMENT |
| LOW | crates/sem-core/src/parser/graph.rs | 6821 | // Step 2: aggregate export-side data from *every* scan (green or red — | COMMENT |
| LOW | crates/sem-core/src/parser/graph.rs | 6888 | // Step 3: fingerprint every file that contributes to the export surface, | COMMENT |
| LOW | crates/sem-core/src/parser/graph.rs | 6916 | // Step 4: decide GREEN/RED per file, using the cache's *previous* read | COMMENT |
| LOW | crates/sem-core/src/parser/graph.rs | 6932 | // Step 5: build entries for every RED file. GREEN files are untouched — | COMMENT |
| LOW | crates/sem-core/src/parser/graph.rs | 7121 | // Step 6: apply. Sequential — `HashMap::insert`/`remove` on the one | COMMENT |
| LOW⚡ | benchmarks/dependency-accuracy/run_benchmark.py | 188 | # Step 1: Index the project (may already be indexed, that's fine) | COMMENT |
| LOW⚡ | benchmarks/dependency-accuracy/run_benchmark.py | 194 | # Step 2: Parse all files to build entity map and call sites | COMMENT |
| LOW⚡ | benchmarks/dependency-accuracy/run_benchmark.py | 213 | # Step 3: For each call site, query stack-graphs and resolve | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | crates/sem-core/tests/graph_accuracy.rs | 30 | .args(["config", "user.email", "test@test.com"]) | CODE |
| LOW | crates/sem-core/tests/graph_accuracy.rs | 125 | .args(["config", "user.email", "test@test.com"]) | CODE |
| LOW | crates/sem-core/tests/graph_accuracy.rs | 218 | vec!["config", "user.email", "test@test.com"], | CODE |
| LOW | crates/sem-core/tests/scope_resolve_bench.rs | 28 | .args(["config", "user.email", "test@test.com"]) | CODE |
| LOW | crates/sem-core/tests/stem_collision_ground_truth.rs | 38 | vec!["config", "user.email", "test@test.com"], | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | pi/test/tools/grep-literal.test.ts | 32 | " return True", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | benchmarks/dependency-accuracy/run_benchmark.py | 220 | # Check if definition points to an import binding | COMMENT |
| LOW | benchmarks/dependency-accuracy/run_benchmark.py | 286 | # Check if this is a top-level function (not inside a class) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | uninstall.sh | 4 | # Usage: | COMMENT |
| LOW | install.sh | 4 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pi/src/transaction/simple/test_patch_delta.py | 1 | CODE | |
| LOW | benchmarks/dependency-accuracy/project/compat.py | 3 | CODE | |
| LOW | benchmarks/dependency-accuracy/project/noise.py | 11 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pi/test/tools/weave-edit.test.ts | 62 | const helperStart = lines.findIndex((l) => l === "def helper():"); | CODE |
| LOW | benchmarks/dependency-accuracy/project/api.py | 12 | def handle_request(request): | CODE |