Gentle-AI configures the AI coding agents you already use: Claude Code, Cursor, OpenCode, Codex, Pi, and more. Choose persistent memory, Organic-Driven Development, curated skills, MCP servers, personas, and optional bounded review. Open source, no agent lock-in.
This report summarizes scanner evidence for Gentleman-Programming/gentle-ai, a Go project with 8,160 GitHub stars. SynthScan examined 610,532 lines of code across 2548 source files, recording 1209 pattern matches distributed across 16 syntactic categories. The legacy adjusted pattern signal is 3.0 (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? 917 finding(s).
Are imports declared and package/API names verified? 20 finding(s).
Are wrappers, guards, and repeated structures necessary? 429 finding(s).
Which changes need focused human review? 1209 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 1209 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 |
|---|---|---|---|---|
| MEDIUM | internal/app/app_test.go | 498 | // ─── BUG 3: SyncOverrides.StrictTDD never read in tuiSync ─────────────────── | COMMENT |
| MEDIUM | internal/app/app_test.go | 1150 | // ─── Persist model assignments (TUI path) ─────────────────────────────────── | COMMENT |
| MEDIUM | internal/app/app_test.go | 1950 | // ─── Carril model assignment tests (W-3 fix) ───────────────────────────────── | COMMENT |
| MEDIUM | internal/app/app_test.go | 2232 | // ─── Slice 4 RED: deferred sync on launch via pending_sync flag ─────────────── | COMMENT |
| MEDIUM | internal/app/app_test.go | 2780 | // ─── Issue #535: upgrade argument validation pre-effect gate ─────────────── | COMMENT |
| MEDIUM | internal/app/app_test.go | 2780 | // ─── Issue #535: upgrade argument validation pre-effect gate ─────────────── | COMMENT |
| MEDIUM | internal/app/selfupdate_test.go | 604 | // ─── Slice 4 RED: PendingSync written on successful self-upgrade ───────────── | COMMENT |
| MEDIUM | internal/app/selfupdate_test.go | 756 | // ─── Slice 5 RED: CLI prompt is default ────────────────────────────────────── | COMMENT |
| MEDIUM | internal/agentbuilder/engine_test.go | 11 | // ─── MockEngine tests ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/agentbuilder/engine_test.go | 64 | // ─── NewEngine tests ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/agentbuilder/engine_test.go | 121 | // ─── Engine command construction tests ─────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | internal/tui/model_test.go | 3420 | // ─── T20: Model config → sync persistence (PendingSyncOverrides) ─────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 1792 | // ─── OperationRunning guard: Enter blocked ────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 1852 | // ─── OperationRunning guard: Esc blocked ──────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 1899 | // ─── UpgradeDoneMsg error model ───────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 1923 | // ─── UpgradePhaseCompletedMsg (two-phase upgrade+sync) ───────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 1972 | // ─── UpgradeDoneMsg clears update state ───────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 2045 | // ─── T16: Welcome screen 7-item menu navigation ──────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 2814 | // ─── T19: Model config navigation ───────────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 3122 | // ─── Detection-default consumer regression tests ─────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 3144 | // ─── T_BACKUP_SCROLL: Backup scroll and new key navigation tests ────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 3871 | // ─── agentsToManage / preselectedAgents — state wins over detection ───────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 3987 | // ─── Bug fixes: Enter-Back navigation must be consistent with ESC ──────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 4296 | // ─── Issue #150: Wrap-around navigation ───────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 4296 | // ─── Issue #150: Wrap-around navigation ───────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 4411 | // ─── Issue #130: ModelConfig pre-populate model assignments ──────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 4411 | // ─── Issue #130: ModelConfig pre-populate model assignments ──────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 4518 | // profiles ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 4597 | // ─── T_BACKUP_PIN: Pin key tests ─────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 5030 | // ─── ODD installer routing and retained Configure models tests ─────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 5224 | // ─── FIX W-1: Codex custom sub-mode cursor reset ───────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 5226 | // ─── FIX W-2: CustomConfirmed reset on preset selection ────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 5263 | // ─── FIX W-1: Codex custom sub-mode cursor reset ───────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 5332 | // ─── TUI-path PendingSync (task 4.8) ──────────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 5540 | // ─── AdvisoryMsg TUI layer tests ───────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 5902 | // ─── Advisory message sanitization tests ───────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 6293 | // ─── Enter confirms highlighted cursor option ───────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 6438 | // ─── Upgrade error surfacing ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 6554 | // ─── UpdateCheckResultMsg guard: only switch from Welcome ──────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 6580 | // ─── UpgradeFn nil guard ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 6734 | // ─── Unit 1+2: pickerFlowSlice, pickerNextScreen, pickerPreviousScreen ────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 7035 | // ─── Unit 3: applyPickerEntry ───────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 7296 | // ─── ODD installer and Configure models back-row regression ───────────────── | COMMENT |
| MEDIUM | internal/tui/agent_builder_nav_test.go | 14 | // ─── Helper: set up a model on the agent builder engine screen ─────────────── | COMMENT |
| MEDIUM | internal/tui/agent_builder_nav_test.go | 46 | // ─── T-28.2: Esc from ScreenAgentBuilderEngine → back to Custom Agents ───── | COMMENT |
| MEDIUM | internal/tui/agent_builder_nav_test.go | 59 | // ─── T-28.3: Enter on engine → navigates to ScreenAgentBuilderPrompt ────────── | COMMENT |
| MEDIUM | internal/tui/agent_builder_nav_test.go | 76 | // ─── T-28.4: Enter on prompt with empty textarea → stays on prompt ──────────── | COMMENT |
| MEDIUM | internal/tui/agent_builder_nav_test.go | 95 | // ─── T-28.5: A filled prompt starts generic generation directly ───────────── | COMMENT |
| MEDIUM | internal/tui/agent_builder_nav_test.go | 125 | // ─── T-28.10: AgentBuilderGeneratedMsg moves to Preview ────────────────────── | COMMENT |
| MEDIUM | internal/tui/agent_builder_nav_test.go | 151 | // ─── T-28.11: AgentBuilderGeneratedMsg with error stays on Generating ───────── | COMMENT |
| MEDIUM | internal/tui/agent_builder_nav_test.go | 169 | // ─── T-28.12: AgentBuilderInstallDoneMsg moves to Complete ─────────────────── | COMMENT |
| MEDIUM | internal/tui/agent_builder_nav_test.go | 193 | // ─── T-28.13: Enter on Complete → back to Custom Agents ──────────────────── | COMMENT |
| MEDIUM | internal/tui/agent_builder_nav_test.go | 207 | // ─── T-28.14: Esc from Complete → back to Custom Agents ──────────────────── | COMMENT |
| MEDIUM | internal/tui/agent_builder_nav_test.go | 221 | // ─── T-28.15: Esc while Generating cancels and returns to Prompt ───────────── | COMMENT |
| MEDIUM | internal/tui/agent_builder_nav_test.go | 275 | // ─── T-28.18: Back option on engine screen (cursor=last) → Welcome ─────────── | COMMENT |
| MEDIUM | internal/tui/screens/codex_model_picker_test.go | 237 | // ─── WU-4 RED: self-describing labels ──────────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/screens/codex_model_picker_test.go | 299 | // ─── WU-3: Custom per-phase picker ─────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/screens/model_config_test.go | 8 | // ─── ModelConfigOptions ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/screens/model_config_test.go | 61 | // ─── RenderModelConfig ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/screens/upgrade_test.go | 13 | // ─── RenderUpgrade states ────────────────────────────────────────────────── | COMMENT |
| 190 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cmd/gentle-telemetry/main.go | 281 | // nextMaintenanceDelay returns the duration from now until the next | COMMENT |
| LOW | bench/journeys_wave1.go | 1321 | // preserves ANY frozen delivery identity at the gate -- | COMMENT |
| LOW | bench/journeys_wave1.go | 1401 | COMMENT | |
| LOW | bench/runner.go | 41 | // (format "<phase>:<lineage_id>"): the deterministic phase-hook | COMMENT |
| LOW | bench/runner.go | 661 | // The runner records the journey as unsupported rather than a false pass. | COMMENT |
| LOW | bench/runner.go | 681 | // expensive one — a shape from a closed vocabulary plus a quote of the | COMMENT |
| LOW | bench/runner.go | 701 | // | COMMENT |
| LOW | bench/axis.go | 1 | package main | COMMENT |
| LOW | bench/axis.go | 21 | // away in a footnote, it is confined here. An axis carries its own properties, | COMMENT |
| LOW | bench/axis.go | 41 | // these journeys, and how it fails when the coupling it depends on moves. | COMMENT |
| LOW | bench/journeys_manifest_test.go | 21 | // or vanish unnoticed. What changed is how it is recorded. A single integer | COMMENT |
| LOW | bench/axis_damaged_store_closure.go | 21 | // negotiated `review status --next-transition` route (Slice S4). These four | COMMENT |
| LOW | bench/axis_damaged_store_closure.go | 61 | // first, damage last). | COMMENT |
| LOW | bench/axis_damaged_store_closure.go | 81 | // (forgedRecoveryPair + forgedRecoveryDescendant, seed damaged before its | COMMENT |
| LOW | bench/axis_damaged_store_closure.go | 181 | // compactRecoveryAuthorizationBinding's own six-field domain (schema, | COMMENT |
| LOW | bench/axis_damaged_store_closure.go | 421 | // last open gap: the spec's "interrupt at each ordered position" is | COMMENT |
| LOW | bench/axis_damaged_store_closure.go | 641 | Title: "A closure genuinely interrupted right after its " + role.label + "'s " + phase + " phase resumes byte-identic | COMMENT |
| LOW | bench/axis_damaged_store_closure.go | 741 | {Name: "the closure's own predecessor never moved either", Composite: requireUnrelatedPredecessorByteIdentical}, | COMMENT |
| LOW | bench/axis_damaged_store.go | 561 | return fmt.Errorf("fixture claims a captured reviewer result but the successor holds no reviewer-results artifact: %v" | COMMENT |
| LOW | bench/axis_damaged_store.go | 661 | payload, err := os.ReadFile(path) | COMMENT |
| LOW | bench/axis_damaged_store.go | 701 | } | COMMENT |
| LOW | bench/axis_damaged_store.go | 1181 | // plan's repository binding or anomaly class — see apply-progress's S3 | COMMENT |
| LOW | bench/journeys.go | 441 | COMMENT | |
| LOW | bench/axis_compatibility.go | 1 | package main | COMMENT |
| LOW | bench/classify.go | 21 | // StdoutCaptured / StderrCaptured are false when the stream was a | COMMENT |
| LOW | bench/classify.go | 81 | {ByDesignHumanAuthority, "the block is a human decision by design"}, | COMMENT |
| LOW | bench/classify.go | 281 | } | COMMENT |
| LOW | bench/classify.go | 341 | COMMENT | |
| LOW | bench/classify.go | 481 | text := o.Stdout + "\n" + o.Stderr | COMMENT |
| LOW | bench/classify.go | 501 | // action is verified in the emitted bytes -> by_design | COMMENT |
| LOW | bench/journeys_managed_assets.go | 41 | if !bytes.Equal(copied, historicalManagedAssetState) { | COMMENT |
| LOW | bench/record.go | 221 | } | COMMENT |
| LOW | bench/classify_test.go | 41 | // than by what a test author imagines a refusal looks like. | COMMENT |
| LOW | bench/analyze.go | 1 | package main | COMMENT |
| LOW | bench/journeys_edge.go | 21 | // own precondition | COMMENT |
| LOW | bench/journeys_edge.go | 881 | // --------------------------------------------------------------------------- | COMMENT |
| LOW | bench/main.go | 1 | // Command gentle-ai-bench measures the FRICTION of driving gentle-ai's review | COMMENT |
| LOW | bench/main.go | 221 | COMMENT | |
| LOW | deploy/telemetry/victoria-metrics-scrape.yaml | 1 | # Promscrape configuration for VictoriaMetrics: one job scraping the | COMMENT |
| LOW | deploy/telemetry/install.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | deploy/telemetry/install.sh | 21 | # gentle-telemetry (cmd/gentle-telemetry) is not yet wired into | COMMENT |
| LOW | deploy/telemetry/install.sh | 521 | # frser-sqlite-datasource v3+ requires this to open a local filesystem | COMMENT |
| LOW | deploy/telemetry/install.sh | 541 | chmod 0600 "${GRAFANA_ADMIN_PASSWORD_FILE}" | COMMENT |
| LOW | deploy/telemetry/install.sh | 561 | # would widen that directory past the exactly-0700 mode systemd | COMMENT |
| LOW | deploy/telemetry/gentle-telemetry-backup.test.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | …emetry/grafana/provisioning/datasources/telemetry.yaml | 1 | # Grafana datasource provisioning for the gentle-telemetry SQLite database. | COMMENT |
| LOW | …emetry/grafana/provisioning/datasources/telemetry.yaml | 21 | jsonData: | COMMENT |
| LOW | internal/recoverytrace/rows.go | 1 | package recoverytrace | COMMENT |
| LOW | internal/recoverytrace/rows.go | 21 | // CREATE that has already landed, MODIFY, or KEEP is a KEEP row, because the | COMMENT |
| LOW | internal/recoverytrace/rows.go | 701 | } | COMMENT |
| LOW | internal/recoverytrace/rows.go | 841 | // plane. Each is unpublished on every ref, so the early-removal deviation is | COMMENT |
| LOW | internal/recoverytrace/rows.go | 861 | // rarSharedSecurityDescriptorOwnedByCurrentProcess), with | COMMENT |
| LOW | internal/recoverytrace/rows.go | 881 | Contributor: recoveryContributor, | COMMENT |
| LOW | internal/recoverytrace/rows.go | 901 | Context: ContextEPD, | COMMENT |
| LOW | internal/recoverytrace/rows.go | 1021 | // removed without authorization from any design. | COMMENT |
| LOW | internal/testsupport/windowsrunner/doc.go | 1 | // Package windowsrunner prepares a Windows test process so Gentle Shell | COMMENT |
| LOW | internal/providercontractbundle/bundle.go | 41 | bundleFixedFileCount = 8 | COMMENT |
| LOW | internal/providercontractbundle/bundle.go | 61 | // bumped CONTRACT_SEMVER to 1.2.0). The same backward-compatibility rule | COMMENT |
| LOW | internal/providercontractbundle/bundle.go | 161 | // file-subagent surface to splice generic SDD composition into), so this | COMMENT |
| LOW | internal/providercontractbundle/bundle_test.go | 21 | ) | COMMENT |
| 590 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …loy/telemetry/scripts/backfill_victoriametrics_test.py | 121 | def test_empty_becomes_unknown(self): | CODE |
| LOW⚡ | …loy/telemetry/scripts/backfill_victoriametrics_test.py | 125 | def test_escapes_backslash_quote_newline_in_order(self): | CODE |
| LOW⚡ | …loy/telemetry/scripts/backfill_victoriametrics_test.py | 133 | def test_ordinary_value_untouched(self): | CODE |
| LOW⚡ | …loy/telemetry/scripts/backfill_victoriametrics_test.py | 141 | def test_quoted_sentinel_is_zero(self): | CODE |
| LOW⚡ | …loy/telemetry/scripts/backfill_victoriametrics_test.py | 160 | def test_row_base_labels_match_go_order(self): | CODE |
| LOW⚡ | …loy/telemetry/scripts/backfill_victoriametrics_test.py | 168 | def test_token_kinds_match_go_order(self): | CODE |
| LOW⚡ | …loy/telemetry/scripts/backfill_victoriametrics_test.py | 176 | def test_token_state_order_matches_go(self): | CODE |
| LOW⚡ | …loy/telemetry/scripts/backfill_victoriametrics_test.py | 181 | def test_rows_by_evidence_labels_match_go_order(self): | CODE |
| LOW⚡ | …loy/telemetry/scripts/backfill_victoriametrics_test.py | 189 | def test_metric_family_order_matches_go(self): | CODE |
| LOW⚡ | …loy/telemetry/scripts/backfill_victoriametrics_test.py | 267 | def test_only_two_timestamps_are_emitted(self): | CODE |
| LOW⚡ | …loy/telemetry/scripts/backfill_victoriametrics_test.py | 272 | def test_no_deliveries_emits_nothing(self): | CODE |
| LOW⚡ | …loy/telemetry/scripts/backfill_victoriametrics_test.py | 277 | def test_stream_lines_reports_stats_and_matches_build_lines(self): | CODE |
| LOW⚡ | …loy/telemetry/scripts/backfill_victoriametrics_test.py | 287 | def test_post_chunks_splits_by_chunk_size(self): | CODE |
| LOW⚡ | …loy/telemetry/scripts/backfill_victoriametrics_test.py | 442 | def test_dry_run_prints_counts_and_makes_no_request(self): | CODE |
| LOW⚡ | …loy/telemetry/scripts/backfill_victoriametrics_test.py | 447 | def test_import_reaches_fake_server(self): | CODE |
| LOW⚡ | …loy/telemetry/scripts/backfill_victoriametrics_test.py | 455 | def test_verify_passes_when_server_reports_matching_sums(self): | CODE |
| LOW | …loy/telemetry/scripts/backfill_victoriametrics_test.py | 220 | def test_deliveries_total_and_rows_total_lines(self): | CODE |
| LOW | …loy/telemetry/scripts/backfill_victoriametrics_test.py | 303 | def test_post_chunks_accepts_a_generator(self): | CODE |
| LOW | …loy/telemetry/scripts/backfill_victoriametrics_test.py | 469 | def test_verify_fails_when_server_reports_mismatching_sums(self): | CODE |
| LOW | …a/released/v3.7.0/plugins/sdd-task-result-artifacts.ts | 66 | function canonicalizeSDDPreflightQuestions(args: unknown): void { | CODE |
| LOW | …a/released/v3.7.0/plugins/sdd-task-result-artifacts.ts | 104 | function normalizeSDDPreflightAnswer(value: string): string { | CODE |
| LOW | …eleased/v3.7.0/plugins-v2/sdd-task-result-artifacts.ts | 64 | function canonicalizeSDDPreflightQuestions(args: unknown): void { | CODE |
| LOW | …eleased/v3.7.0/plugins-v2/sdd-task-result-artifacts.ts | 101 | function normalizeSDDPreflightAnswer(value: string): string { | CODE |
| LOW | …testdata/released/v1.33.2/plugins/background-agents.ts | 438 | async function parseAgentWriteCapability( | CODE |
| LOW | …testdata/released/v1.7.19/plugins/background-agents.ts | 418 | async function parseAgentWriteCapability( | CODE |
| LOW | scripts/test-opencode-v2-host.py | 47 | def wait_for_missing_sdk_refusal(fetch, expected, timeout=15, clock=time.monotonic, sleep=time.sleep): | CODE |
| LOW⚡ | scripts/test_opencode_v2_host_test.py | 49 | def test_cold_inventory_waits_for_active_same_host(self): | CODE |
| LOW⚡ | scripts/test_opencode_v2_host_test.py | 53 | def test_builtin_inventory_does_not_hide_active_managed_plugins(self): | CODE |
| LOW⚡ | scripts/test_opencode_v2_host_test.py | 57 | def test_failed_activation_is_not_success(self): | CODE |
| LOW⚡ | scripts/test_opencode_v2_host_test.py | 61 | def test_missing_activation_is_bounded(self): | CODE |
| LOW⚡ | scripts/test_opencode_v2_host_test.py | 65 | def test_duplicate_active_inventory_is_not_success(self): | CODE |
| LOW⚡ | scripts/test_opencode_v2_host_test.py | 72 | def test_parent_requests_foreground_child(self): | CODE |
| LOW⚡ | scripts/test_opencode_v2_host_test.py | 83 | def test_child_returns_raw_sentinel(self): | CODE |
| LOW⚡ | scripts/test_opencode_v2_host_test.py | 87 | def test_unexpected_model_refuses(self): | CODE |
| LOW⚡ | scripts/test_opencode_v2_host_test.py | 92 | def test_parent_returns_only_after_tool_result(self): | CODE |
| LOW⚡ | scripts/test_opencode_v2_host_test.py | 98 | def test_cli_requires_explicit_version_and_temp_root_before_launch(self): | CODE |
| LOW⚡ | scripts/test_opencode_v2_host_test.py | 107 | def test_modes_are_exclusive_and_tmpdir_is_explicit_fallback(self): | CODE |
| LOW⚡ | scripts/test_opencode_v2_host_test.py | 115 | def test_generic_responder_refuses_review_even_after_tool_result(self): | CODE |
| LOW⚡ | scripts/test_opencode_v2_host_test.py | 121 | def test_generic_config_allows_only_fixture_child(self): | CODE |
| LOW⚡ | scripts/test_opencode_v2_host_test.py | 629 | def test_missing_sdk_active_plugin_is_an_unsafe_finding(self): | CODE |
| LOW⚡ | scripts/test_opencode_v2_host_test.py | 637 | def test_missing_sdk_mode_refuses_present_sdk_before_launch(self): | CODE |
| LOW⚡ | scripts/test_opencode_v2_host_test.py | 646 | def test_missing_sdk_flag_requires_installed_mode(self): | CODE |
| LOW⚡ | scripts/test_opencode_v2_host_test.py | 669 | def test_idless_failures_are_matched_by_installed_source(self): | CODE |
| LOW⚡ | scripts/test_opencode_v2_host_test.py | 678 | def test_active_managed_plugin_is_never_a_refusal(self): | CODE |
| LOW⚡ | scripts/test_opencode_v2_host_test.py | 683 | def test_failure_without_reason_or_duplicate_is_rejected(self): | CODE |
| LOW⚡ | scripts/test_opencode_v2_host_test.py | 689 | def test_absent_refusal_is_bounded(self): | CODE |
| LOW⚡ | scripts/test_opencode_v2_host_test.py | 693 | def test_failure_causes_extract_bounded_cause_for_each_ref(self): | CODE |
| LOW⚡ | scripts/test_opencode_v2_host_test.py | 778 | def test_parent_dispatches_the_marked_step_as_a_foreground_subagent(self): | CODE |
| LOW⚡ | scripts/test_opencode_v2_host_test.py | 788 | def test_parent_forwards_requested_refusal_arguments(self): | CODE |
| LOW⚡ | scripts/test_opencode_v2_host_test.py | 795 | def test_parent_finishes_after_tool_result(self): | CODE |
| LOW⚡ | scripts/test_opencode_v2_host_test.py | 800 | def test_child_replays_the_dispatched_step_or_its_http_error(self): | CODE |
| LOW⚡ | scripts/test_opencode_v2_host_test.py | 809 | def test_unmarked_parent_and_unknown_model_refuse(self): | CODE |
| LOW⚡ | scripts/test_opencode_v2_host_test.py | 818 | def test_provider_serves_scripted_http_error_without_fixture_failure(self): | CODE |
| LOW⚡ | scripts/test_opencode_v2_host_test.py | 878 | def test_admitted_step_requires_materialized_child_and_bound_parent_result(self): | CODE |
| LOW⚡ | scripts/test_opencode_v2_host_test.py | 881 | def test_admitted_step_tolerates_only_the_observed_host_subagent_preamble(self): | CODE |
| LOW⚡ | scripts/test_opencode_v2_host_test.py | 888 | def test_admitted_step_rejects_raw_host_prompt_and_unrewritten_child_output(self): | CODE |
| LOW | scripts/test_opencode_v2_host_test.py | 26 | def test_observed_host_version_matches_selector(self): | CODE |
| LOW | scripts/test_opencode_v2_host_test.py | 133 | def test_generic_dispatch_never_requests_shell_or_review(self): | CODE |
| LOW | scripts/test_opencode_v2_host_test.py | 151 | def test_generic_host_sandbox_includes_version_and_cleanup(self): | CODE |
| LOW | scripts/test_opencode_v2_host_test.py | 176 | def test_generic_main_uses_only_inventory_and_generic_dispatch(self): | CODE |
| 95 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | PRD-AGENT-BUILDER.md | 494 | │ │ ├── agent_builder_engine.go # Step 1: Engine selection | CODE |
| LOW⚡ | PRD-AGENT-BUILDER.md | 495 | │ │ ├── agent_builder_prompt.go # Step 2: Description input | CODE |
| LOW⚡ | PRD-AGENT-BUILDER.md | 496 | │ │ ├── agent_builder_sdd.go # Step 3: SDD integration | CODE |
| LOW⚡ | PRD-AGENT-BUILDER.md | 497 | │ │ ├── agent_builder_generating.go # Step 4: Generation progress | CODE |
| LOW⚡ | PRD-AGENT-BUILDER.md | 498 | │ │ ├── agent_builder_preview.go # Step 5: Preview + edit | CODE |
| LOW⚡ | PRD-AGENT-BUILDER.md | 499 | │ │ └── agent_builder_complete.go # Step 6: Installation complete | CODE |
| LOW⚡ | PRD-AGENT-BUILDER.md | 531 | // Step 1: Selected generation engine | COMMENT |
| LOW⚡ | PRD-AGENT-BUILDER.md | 535 | // Step 2: User prompt | COMMENT |
| LOW⚡ | PRD-AGENT-BUILDER.md | 539 | // Step 3: SDD integration | COMMENT |
| LOW⚡ | PRD-AGENT-BUILDER.md | 543 | // Step 4: Generation | COMMENT |
| LOW⚡ | PRD-AGENT-BUILDER.md | 547 | // Step 5: Preview | COMMENT |
| LOW⚡ | PRD-AGENT-BUILDER.md | 551 | // Step 6: Installation | COMMENT |
| LOW⚡ | internal/agentbuilder/integration_test.go | 41 | // Step 1: Compose prompt. | COMMENT |
| LOW⚡ | internal/agentbuilder/integration_test.go | 49 | // Step 2: Call MockEngine.Generate with the prompt. | COMMENT |
| LOW⚡ | internal/agentbuilder/integration_test.go | 61 | // Step 3: Parse the result. | COMMENT |
| LOW⚡ | internal/agentbuilder/integration_test.go | 67 | // Step 4: Assert GeneratedAgent has correct fields. | COMMENT |
| LOW | internal/agentbuilder/integration_test.go | 81 | // Step 5: Call Install with temp dirs. | COMMENT |
| LOW | internal/agentbuilder/integration_test.go | 95 | // Step 6: Assert files written. | COMMENT |
| LOW | internal/agentbuilder/integration_test.go | 115 | // Step 7: Call LoadRegistry, add entry, verify entry added. | COMMENT |
| LOW⚡ | internal/tui/model_test.go | 3426 | // Step 1: from ScreenModelConfig, cursor=0 → goes to ClaudeModelPicker with ModelConfigMode=true. | COMMENT |
| LOW | internal/tui/model_test.go | 3441 | // Step 2: from ClaudeModelPicker (ModelConfigMode=true), cursor=0 (balanced preset), enter | COMMENT |
| LOW | internal/tui/model_test.go | 6119 | // Step 1: execute the goroutine cmd → should produce UpgradeDoneMsg. | COMMENT |
| LOW | internal/tui/model_test.go | 6145 | // Step 2: feed UpgradeDoneMsg into the model returned by the keypress | COMMENT |
| LOW | internal/components/filemerge/yaml.go | 305 | // Step 1: Find the top-level mcp_servers: key. | COMMENT |
| LOW | internal/components/filemerge/yaml.go | 327 | // Step 2: Find the child region of mcp_servers:. | COMMENT |
| LOW | internal/components/filemerge/yaml.go | 341 | // Step 3: Within the region, find the server key at exactly 2-space indent. | COMMENT |
| LOW | internal/components/filemerge/yaml.go | 361 | // Step 4: Within the server's sub-block, find the command: line. | COMMENT |
| LOW | …acyassets/testdata/v3.7.0/opencode-prompt-sdd-apply.md | 67 | ### Step 1: Load Skills | COMMENT |
| LOW | …acyassets/testdata/v3.7.0/opencode-prompt-sdd-apply.md | 70 | ### Step 2: Read Context | COMMENT |
| LOW | …acyassets/testdata/v3.7.0/opencode-prompt-sdd-apply.md | 116 | ### Step 3: Read Testing Capabilities and Resolve Mode | COMMENT |
| LOW | …acyassets/testdata/v3.7.0/opencode-prompt-sdd-apply.md | 163 | ### Step 4: Implement Tasks (Standard Workflow) | COMMENT |
| LOW | …acyassets/testdata/v3.7.0/opencode-prompt-sdd-apply.md | 178 | ### Step 5: Mark Tasks Complete | COMMENT |
| LOW | …acyassets/testdata/v3.7.0/opencode-prompt-sdd-apply.md | 190 | ### Step 6: Persist Progress | COMMENT |
| LOW | …acyassets/testdata/v3.7.0/opencode-prompt-sdd-apply.md | 207 | ### Step 7: Return Summary | COMMENT |
| LOW | internal/components/persona/inject_test.go | 2072 | // Step 1: install gentleman — creates output-styles/gentleman.md and sets outputStyle in settings.json. | COMMENT |
| LOW | internal/components/persona/inject_test.go | 2096 | // Step 2: switch to neutral — should clean both residuals. | COMMENT |
| LOW | internal/components/persona/inject_test.go | 2190 | // Step 1: install gentleman — agent.gentleman key must appear in opencode.json. | COMMENT |
| LOW | internal/components/persona/inject_test.go | 2222 | // Step 2: switch to neutral — agent.gentleman must be removed. | COMMENT |
| LOW | internal/assets/skills/_shared/skill-resolver.md | 15 | ### Step 1: Obtain the Skill Registry | COMMENT |
| LOW | internal/assets/skills/_shared/skill-resolver.md | 25 | ### Step 2: Match Relevant Skills | COMMENT |
| LOW | internal/assets/skills/_shared/skill-resolver.md | 36 | ### Step 3: Pass Skill Paths | COMMENT |
| LOW | internal/assets/skills/_shared/skill-resolver.md | 51 | ### Step 4: Report Resolution | COMMENT |
| LOW⚡ | e2e/e2e_test.sh | 1391 | # Step 1: Install persona and memory with gentleman. | COMMENT |
| LOW⚡ | e2e/e2e_test.sh | 1398 | # Step 2: Switch to neutral persona | COMMENT |
| LOW⚡ | e2e/e2e_test.sh | 1401 | # Step 3: Verify sections survived | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | deploy/telemetry/scripts/backfill-victoriametrics.py | 455 | except urllib.error.URLError: | CODE |
| HIGH | scripts/test-opencode-v2-host.py | 95 | except ProcessLookupError: | CODE |
| HIGH | scripts/test-opencode-v2-host.py | 102 | except ProcessLookupError: | CODE |
| HIGH | scripts/test-opencode-v2-host.py | 307 | except ProcessLookupError: | CODE |
| HIGH | e2e/shell-linux-user-install-guest.py | 380 | except Exception: | CODE |
| HIGH | e2e/shell-linux-user-install-guest.py | 391 | except Exception: | CODE |
| HIGH | e2e/shell-macos-ci-contract.test.py | 99 | except ValueError: | CODE |
| HIGH | e2e/shell-macos-qualification.py | 180 | except ProcessLookupError: | CODE |
| HIGH | e2e/shell-macos-qualification.py | 185 | except (OSError, subprocess.TimeoutExpired): | CODE |
| HIGH | e2e/shell-macos-qualification.py | 189 | except subprocess.TimeoutExpired: | CODE |
| HIGH | e2e/shell-native-global-mirror.py | 187 | except OSError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | scripts/opencode_v2_loopback.py | 198 | registrations.push(await ctx.session.hook("title", call => {call.result="Fixture title"})) | CODE |
| HIGH⚡ | scripts/opencode_v2_loopback.py | 199 | registrations.push(await ctx.session.hook("context", call => {log({type:"context",agent:call.agent,system:call.system,t | CODE |
| HIGH⚡ | scripts/opencode_v2_loopback.py | 200 | registrations.push(await ctx.session.hook("http.request", call => { | CODE |
| HIGH⚡ | scripts/opencode_v2_loopback.py | 204 | registrations.push(await ctx.tool.hook("execute.before", call => {if(call.tool==="subagent")log({type:"before",id:call. | CODE |
| HIGH⚡ | scripts/opencode_v2_loopback.py | 205 | registrations.push(await ctx.tool.hook("execute.after", call => {if(call.tool==="subagent")log({type:"after",id:call.id | CODE |
| HIGH | e2e/shell-macos-ci-contract.test.py | 134 | self.assertIn('github.event.pull_request.number || github.sha }}', self.text) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | internal/agentbuilder/integration_test.go | 41 | // Step 1: Compose prompt. | COMMENT |
| LOW⚡ | internal/agentbuilder/integration_test.go | 49 | // Step 2: Call MockEngine.Generate with the prompt. | COMMENT |
| LOW⚡ | internal/agentbuilder/integration_test.go | 61 | // Step 3: Parse the result. | COMMENT |
| LOW⚡ | internal/agentbuilder/integration_test.go | 67 | // Step 4: Assert GeneratedAgent has correct fields. | COMMENT |
| LOW | internal/agentbuilder/integration_test.go | 81 | // Step 5: Call Install with temp dirs. | COMMENT |
| LOW | internal/agentbuilder/integration_test.go | 95 | // Step 6: Assert files written. | COMMENT |
| LOW | internal/agentbuilder/integration_test.go | 115 | // Step 7: Call LoadRegistry, add entry, verify entry added. | COMMENT |
| LOW⚡ | internal/tui/model_test.go | 3426 | // Step 1: from ScreenModelConfig, cursor=0 → goes to ClaudeModelPicker with ModelConfigMode=true. | COMMENT |
| LOW | internal/tui/model_test.go | 3441 | // Step 2: from ClaudeModelPicker (ModelConfigMode=true), cursor=0 (balanced preset), enter | COMMENT |
| LOW | internal/tui/model_test.go | 6119 | // Step 1: execute the goroutine cmd → should produce UpgradeDoneMsg. | COMMENT |
| LOW | internal/tui/model_test.go | 6145 | // Step 2: feed UpgradeDoneMsg into the model returned by the keypress | COMMENT |
| LOW | internal/components/filemerge/yaml.go | 305 | // Step 1: Find the top-level mcp_servers: key. | COMMENT |
| LOW | internal/components/filemerge/yaml.go | 327 | // Step 2: Find the child region of mcp_servers:. | COMMENT |
| LOW | internal/components/filemerge/yaml.go | 341 | // Step 3: Within the region, find the server key at exactly 2-space indent. | COMMENT |
| LOW | internal/components/filemerge/yaml.go | 361 | // Step 4: Within the server's sub-block, find the command: line. | COMMENT |
| LOW | internal/components/persona/inject_test.go | 2072 | // Step 1: install gentleman — creates output-styles/gentleman.md and sets outputStyle in settings.json. | COMMENT |
| LOW | internal/components/persona/inject_test.go | 2096 | // Step 2: switch to neutral — should clean both residuals. | COMMENT |
| LOW | internal/components/persona/inject_test.go | 2190 | // Step 1: install gentleman — agent.gentleman key must appear in opencode.json. | COMMENT |
| LOW | internal/components/persona/inject_test.go | 2222 | // Step 2: switch to neutral — agent.gentleman must be removed. | COMMENT |
| LOW⚡ | e2e/e2e_test.sh | 1391 | # Step 1: Install persona and memory with gentleman. | COMMENT |
| LOW⚡ | e2e/e2e_test.sh | 1398 | # Step 2: Switch to neutral persona | COMMENT |
| LOW⚡ | e2e/e2e_test.sh | 1401 | # Step 3: Verify sections survived | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | CONTRIBUTORS.md | 34 | | <img src="https://github.com/MzaGuille.png" alt="" width="40"> | Mza.Guille | [@MzaGuille](https://github.com/MzaGuill | CODE |
| MEDIUM | internal/providercontractbundle/bundle_test.go | 542 | // gentle-pi mirrors (issue #4056): the orchestration file must be Pi's exact | COMMENT |
| MEDIUM | internal/agentbuilder/prompt.go | 19 | 5. ## Rules — Hard constraints and guardrails (what the agent must/must not do) | CODE |
| MEDIUM | internal/model/codex_model_test.go | 302 | // sdd-apply belongs to Código (sdd-mid): writing code in an agentic loop is | COMMENT |
| MEDIUM | internal/model/codex_preset_matrix_test.go | 7 | // code in an agentic loop where effort dominates, cheap lanes do structured | COMMENT |
| MEDIUM | docs/releases/v2.2.0-closure-ledger.md | 407 | | #852 | statick88 | feat(kilocode): native SDD orchestration | ○ **conflicts (mechanical)** | 8/28 overlap; orchestrato | CODE |
| MEDIUM | docs/audits/2026-07-21-rdd-system-audit.md | 887 | | [#1380](https://github.com/Gentleman-Programming/gentle-ai/issues/1380) — adaptive evidence-driven review | Open; appr | CODE |
| MEDIUM | …audits/2026-07-23-systemic-remediation-architecture.md | 779 | ### 8.2 Anti-god-object guardrails | COMMENT |
| MEDIUM | …audits/2026-07-23-systemic-remediation-architecture.md | 832 | | [#852](https://github.com/Gentleman-Programming/gentle-ai/pull/852) | @statick88 | Extract Kilo capabilities/assets; d | CODE |
| MEDIUM | …its/2026-07-23-organic-recovery-implementation-plan.md | 103 | | [Generic orchestrator delegation rules](../../internal/assets/generic/sdd-orchestrator.md#delegation-rules) and their | CODE |
| MEDIUM | odd/tasks/1731-parity-delegate-for-reason.md | 1 | # 1731-parity-delegate-for-reason: port gentle-shell #1731 orchestration rules to the gentle-ai canon | COMMENT |
| MEDIUM | .github/workflows/promote-stable-rc.yml | 265 | # The verifier is orchestration code, not a release artifact. It must | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | deploy/telemetry/scripts/backfill-victoriametrics.py | 341 | CODE | |
| LOW | deploy/telemetry/scripts/backfill-victoriametrics.py | 500 | CODE | |
| LOW | scripts/test-opencode-v2-host.py | 47 | CODE | |
| LOW | scripts/test-opencode-v2-host.py | 77 | CODE | |
| LOW | scripts/test-opencode-v2-host.py | 91 | CODE | |
| LOW | scripts/test-opencode-v2-host.py | 277 | CODE | |
| LOW | scripts/test-opencode-v2-host.py | 314 | CODE | |
| LOW | scripts/test-opencode-v2-host.py | 463 | CODE | |
| LOW | scripts/opencode_v2_loopback.py | 252 | CODE | |
| LOW | scripts/test_opencode_v2_host_test.py | 15 | CODE | |
| LOW | scripts/test_opencode_v2_host_test.py | 341 | CODE | |
| LOW | scripts/test_opencode_v2_host_test.py | 500 | CODE | |
| LOW | e2e/shell-linux-user-install-guest.py | 165 | CODE | |
| LOW | e2e/shell-linux-user-install-guest.py | 348 | CODE | |
| LOW | e2e/shell-linux-user-install-guest.py | 532 | CODE | |
| LOW | e2e/shell-linux-user-install-guest.py | 265 | CODE | |
| LOW | e2e/shell-macos-ci-contract.test.py | 70 | CODE | |
| LOW | e2e/shell-macos-qualification.py | 302 | CODE | |
| LOW | e2e/shell-tui-acceptance.py | 118 | CODE | |
| LOW | e2e/shell-tui-acceptance.py | 350 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | internal/app/selfupdate.go | 224 | // Tradeoff: Unix loses seamless re-exec restart; mitigated by clear copy below. | COMMENT |
| MEDIUM | internal/opencode/catalog_process_windows_test.go | 47 | // cleanup robust without racing the spawn. | COMMENT |
| MEDIUM | .github/workflows/shell-linux-first-ci.yml | 185 | # The whole output stays withheld. The harness's last line is its | COMMENT |
| MEDIUM⚡ | e2e/shell-macos-ci-contract.test.py | 265 | # 4.5.x, whose installer pins a newer gentle-ai. The harness derives | COMMENT |
| MEDIUM | e2e/shell-macos-qualification.py | 59 | # repository's list copy so a newly reviewed release needs no harness change. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | internal/reviewtransaction/compact_fixture_test.go | 548 | predecessor, _, successor, _ := preContractRecoveryFixture(t, repo, "placeholder", func(state *CompactState) { | CODE |
| LOW | internal/reviewtransaction/bounded_lenses_test.go | 352 | {name: "placeholder", value: "placeholder", wantErr: true}, | CODE |
| LOW | internal/reviewtransaction/transaction.go | 1735 | case "n/a", "na", "none", "todo", "tbd", "pass", "passed", "success", "placeholder": | CODE |
| LOW | internal/update/check_test.go | 159 | if err := os.WriteFile(binaryPath, []byte("placeholder"), 0o755); err != nil { | CODE |
| LOW | internal/update/upgrade/executor_test.go | 551 | ".claude.json": `{"oauthAccount":{"emailAddress":"user@example.com"},"mcpServers":{"eng | CODE |
| LOW | internal/cli/sync_test.go | 1964 | registryBefore := []byte(`{"oauthAccount":{"emailAddress":"user@example.com"},"mcpServers":{"codegraph":{"command":"cod | CODE |
| LOW | internal/cli/review_provider_roles.go | 891 | value != "pass" && value != "passed" && value != "success" && value != "placeholder" | CODE |
| LOW | internal/components/engram/inject_test.go | 1213 | seed := []byte(`{"oauthAccount":{"emailAddress":"user@example.com"},"projects":{"/repo":{"allowedTools":[]}},"mcpServer | CODE |
| LOW | internal/components/engram/inject_test.go | 1227 | assertNestedString(t, registry, "user@example.com", "oauthAccount", "emailAddress") | CODE |
| LOW | internal/components/mcp/inject_test.go | 585 | userConfig := `{"oauthAccount":{"emailAddress":"user@example.com"},"projects":{"/repo":{"allowedTools":[]}},"mcpServers | CODE |
| LOW | internal/components/uninstall/service_test.go | 1468 | registry := []byte(`{"oauthAccount":{"emailAddress":"user@example.com"},"mcpServers":{"codegraph":{"command":"codegraph | CODE |
| LOW | internal/components/uninstall/service_test.go | 1500 | if got := remaining["oauthAccount"].(map[string]any)["emailAddress"]; got != "user@example.com" { | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/opencode_v2_loopback.py | 300 | except Exception as error: # A refused step may surface as a host error. | STRING |
| LOW | e2e/shell-linux-user-install-guest.py | 294 | except Exception: | CODE |
| LOW | e2e/shell-linux-user-install-guest.py | 380 | except Exception: | CODE |
| LOW | e2e/shell-linux-user-install-guest.py | 391 | except Exception: | CODE |
| LOW | e2e/shell-linux-user-install-guest.py | 710 | except Exception: | CODE |
| LOW | e2e/shell-linux-user-install-guest.py | 1238 | except Exception as error: | CODE |
| MEDIUM | e2e/shell-linux-user-install-guest.py | 265 | def do_GET(self): | CODE |
| LOW | e2e/shell-native-persistence-mirror.py | 64 | except Exception: | CODE |
| LOW | e2e/shell-macos-qualification.py | 627 | except Exception as error: # every failure becomes receipt evidence | CODE |
| LOW | e2e/shell-native-global-mirror.py | 118 | except Exception as error: | CODE |
| LOW | e2e/shell-native-global-mirror.py | 135 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | deploy/telemetry/install.sh | 13 | # Usage: | COMMENT |
| LOW⚡ | scripts/install.sh | 8 | # Usage: | COMMENT |
| LOW | scripts/cross-lane-battery.sh | 7 | # Usage: | COMMENT |
| LOW | e2e/docker-test.sh | 4 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | internal/assets/gga/pr_mode.sh | 96 | # Check if file matches any include pattern | COMMENT |
| LOW | internal/assets/gga/pr_mode.sh | 117 | # Check if file matches any exclude pattern | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …loy/telemetry/scripts/backfill_victoriametrics_test.py | 17 | CODE | |
| LOW | e2e/shell-codegraph-shared-node.py | 4 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …loy/telemetry/scripts/backfill_victoriametrics_test.py | 37 | CODE | |
| LOW | deploy/telemetry/scripts/backfill-victoriametrics.py | 114 | CODE |