AI Slop Code Risk Monitor

Gentleman-Programming/gentle-ai

SlopCodeMonitor badge for Gentleman-Programming/gentle-ai Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

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.

3.0 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

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.

3.0
Adjusted Signal
3.0
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
8.2K
Stars
Go
Language
610.5K
Lines of Code
2.5K
Files
1.2K
Pattern Hits
2026-10-31
Scan Date
0.01
HC Hit Rate

Risk Review · Payload v1

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.

Cognitive Ownership Risk 7.8/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 917 finding(s).

Hallucinated Dependency & Supply Chain Risk 0.5/100 · LOW

Are imports declared and package/API names verified? 20 finding(s).

Agent Over-Engineering Ratio 7.7/100 · LOW

Are wrappers, guards, and repeated structures necessary? 429 finding(s).

PR Review Velocity Impact 13.9/100 · LOW

Which changes need focused human review? 1209 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

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.

Severity Breakdown

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.

CRITICAL 0HIGH 17MEDIUM 268LOW 924

Directory Score Breakdown

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.

Pattern Findings

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.

Decorative Section Separators250 hits · 734 pts
SeverityFileLineSnippetContext
MEDIUMinternal/app/app_test.go498// ─── BUG 3: SyncOverrides.StrictTDD never read in tuiSync ───────────────────COMMENT
MEDIUMinternal/app/app_test.go1150// ─── Persist model assignments (TUI path) ───────────────────────────────────COMMENT
MEDIUMinternal/app/app_test.go1950// ─── Carril model assignment tests (W-3 fix) ─────────────────────────────────COMMENT
MEDIUMinternal/app/app_test.go2232// ─── Slice 4 RED: deferred sync on launch via pending_sync flag ───────────────COMMENT
MEDIUMinternal/app/app_test.go2780// ─── Issue #535: upgrade argument validation pre-effect gate ───────────────COMMENT
MEDIUMinternal/app/app_test.go2780// ─── Issue #535: upgrade argument validation pre-effect gate ───────────────COMMENT
MEDIUMinternal/app/selfupdate_test.go604// ─── Slice 4 RED: PendingSync written on successful self-upgrade ─────────────COMMENT
MEDIUMinternal/app/selfupdate_test.go756// ─── Slice 5 RED: CLI prompt is default ──────────────────────────────────────COMMENT
MEDIUMinternal/agentbuilder/engine_test.go11// ─── MockEngine tests ────────────────────────────────────────────────────────COMMENT
MEDIUMinternal/agentbuilder/engine_test.go64// ─── NewEngine tests ─────────────────────────────────────────────────────────COMMENT
MEDIUMinternal/agentbuilder/engine_test.go121// ─── Engine command construction tests ───────────────────────────────────────COMMENT
MEDIUM⚡internal/tui/model_test.go3420// ─── T20: Model config → sync persistence (PendingSyncOverrides) ───────────COMMENT
MEDIUMinternal/tui/model_test.go1792// ─── OperationRunning guard: Enter blocked ──────────────────────────────────COMMENT
MEDIUMinternal/tui/model_test.go1852// ─── OperationRunning guard: Esc blocked ────────────────────────────────────COMMENT
MEDIUMinternal/tui/model_test.go1899// ─── UpgradeDoneMsg error model ─────────────────────────────────────────────COMMENT
MEDIUMinternal/tui/model_test.go1923// ─── UpgradePhaseCompletedMsg (two-phase upgrade+sync) ─────────────────────COMMENT
MEDIUMinternal/tui/model_test.go1972// ─── UpgradeDoneMsg clears update state ─────────────────────────────────────COMMENT
MEDIUMinternal/tui/model_test.go2045// ─── T16: Welcome screen 7-item menu navigation ────────────────────────────COMMENT
MEDIUMinternal/tui/model_test.go2814// ─── T19: Model config navigation ─────────────────────────────────────────COMMENT
MEDIUMinternal/tui/model_test.go3122// ─── Detection-default consumer regression tests ───────────────────────────COMMENT
MEDIUMinternal/tui/model_test.go3144// ─── T_BACKUP_SCROLL: Backup scroll and new key navigation tests ──────────────COMMENT
MEDIUMinternal/tui/model_test.go3871// ─── agentsToManage / preselectedAgents — state wins over detection ─────────COMMENT
MEDIUMinternal/tui/model_test.go3987// ─── Bug fixes: Enter-Back navigation must be consistent with ESC ────────────COMMENT
MEDIUMinternal/tui/model_test.go4296// ─── Issue #150: Wrap-around navigation ─────────────────────────────────────COMMENT
MEDIUMinternal/tui/model_test.go4296// ─── Issue #150: Wrap-around navigation ─────────────────────────────────────COMMENT
MEDIUMinternal/tui/model_test.go4411// ─── Issue #130: ModelConfig pre-populate model assignments ────────────────COMMENT
MEDIUMinternal/tui/model_test.go4411// ─── Issue #130: ModelConfig pre-populate model assignments ────────────────COMMENT
MEDIUMinternal/tui/model_test.go4518// profiles ───────────────────────────────────────────────────────────────COMMENT
MEDIUMinternal/tui/model_test.go4597// ─── T_BACKUP_PIN: Pin key tests ───────────────────────────────────────────COMMENT
MEDIUMinternal/tui/model_test.go5030// ─── ODD installer routing and retained Configure models tests ───────────────COMMENT
MEDIUMinternal/tui/model_test.go5224// ─── FIX W-1: Codex custom sub-mode cursor reset ─────────────────────────────COMMENT
MEDIUMinternal/tui/model_test.go5226// ─── FIX W-2: CustomConfirmed reset on preset selection ──────────────────────COMMENT
MEDIUMinternal/tui/model_test.go5263// ─── FIX W-1: Codex custom sub-mode cursor reset ─────────────────────────────COMMENT
MEDIUMinternal/tui/model_test.go5332// ─── TUI-path PendingSync (task 4.8) ────────────────────────────────────────COMMENT
MEDIUMinternal/tui/model_test.go5540// ─── AdvisoryMsg TUI layer tests ─────────────────────────────────────────────COMMENT
MEDIUMinternal/tui/model_test.go5902// ─── Advisory message sanitization tests ─────────────────────────────────────COMMENT
MEDIUMinternal/tui/model_test.go6293// ─── Enter confirms highlighted cursor option ─────────────────────────────────COMMENT
MEDIUMinternal/tui/model_test.go6438// ─── Upgrade error surfacing ──────────────────────────────────────────────────COMMENT
MEDIUMinternal/tui/model_test.go6554// ─── UpdateCheckResultMsg guard: only switch from Welcome ────────────────────COMMENT
MEDIUMinternal/tui/model_test.go6580// ─── UpgradeFn nil guard ─────────────────────────────────────────────────────COMMENT
MEDIUMinternal/tui/model_test.go6734// ─── Unit 1+2: pickerFlowSlice, pickerNextScreen, pickerPreviousScreen ──────COMMENT
MEDIUMinternal/tui/model_test.go7035// ─── Unit 3: applyPickerEntry ─────────────────────────────────────────────COMMENT
MEDIUMinternal/tui/model_test.go7296// ─── ODD installer and Configure models back-row regression ─────────────────COMMENT
MEDIUMinternal/tui/agent_builder_nav_test.go14// ─── Helper: set up a model on the agent builder engine screen ───────────────COMMENT
MEDIUMinternal/tui/agent_builder_nav_test.go46// ─── T-28.2: Esc from ScreenAgentBuilderEngine → back to Custom Agents ─────COMMENT
MEDIUMinternal/tui/agent_builder_nav_test.go59// ─── T-28.3: Enter on engine → navigates to ScreenAgentBuilderPrompt ──────────COMMENT
MEDIUMinternal/tui/agent_builder_nav_test.go76// ─── T-28.4: Enter on prompt with empty textarea → stays on prompt ────────────COMMENT
MEDIUMinternal/tui/agent_builder_nav_test.go95// ─── T-28.5: A filled prompt starts generic generation directly ─────────────COMMENT
MEDIUMinternal/tui/agent_builder_nav_test.go125// ─── T-28.10: AgentBuilderGeneratedMsg moves to Preview ──────────────────────COMMENT
MEDIUMinternal/tui/agent_builder_nav_test.go151// ─── T-28.11: AgentBuilderGeneratedMsg with error stays on Generating ─────────COMMENT
MEDIUMinternal/tui/agent_builder_nav_test.go169// ─── T-28.12: AgentBuilderInstallDoneMsg moves to Complete ───────────────────COMMENT
MEDIUMinternal/tui/agent_builder_nav_test.go193// ─── T-28.13: Enter on Complete → back to Custom Agents ────────────────────COMMENT
MEDIUMinternal/tui/agent_builder_nav_test.go207// ─── T-28.14: Esc from Complete → back to Custom Agents ────────────────────COMMENT
MEDIUMinternal/tui/agent_builder_nav_test.go221// ─── T-28.15: Esc while Generating cancels and returns to Prompt ─────────────COMMENT
MEDIUMinternal/tui/agent_builder_nav_test.go275// ─── T-28.18: Back option on engine screen (cursor=last) → Welcome ───────────COMMENT
MEDIUMinternal/tui/screens/codex_model_picker_test.go237// ─── WU-4 RED: self-describing labels ────────────────────────────────────────COMMENT
MEDIUMinternal/tui/screens/codex_model_picker_test.go299// ─── WU-3: Custom per-phase picker ───────────────────────────────────────────COMMENT
MEDIUMinternal/tui/screens/model_config_test.go8// ─── ModelConfigOptions ────────────────────────────────────────────────────COMMENT
MEDIUMinternal/tui/screens/model_config_test.go61// ─── RenderModelConfig ─────────────────────────────────────────────────────COMMENT
MEDIUMinternal/tui/screens/upgrade_test.go13// ─── RenderUpgrade states ──────────────────────────────────────────────────COMMENT
190 more matches not shown…
Over-Commented Block650 hits · 642 pts
SeverityFileLineSnippetContext
LOWcmd/gentle-telemetry/main.go281// nextMaintenanceDelay returns the duration from now until the nextCOMMENT
LOWbench/journeys_wave1.go1321 // preserves ANY frozen delivery identity at the gate --COMMENT
LOWbench/journeys_wave1.go1401COMMENT
LOWbench/runner.go41 // (format "<phase>:<lineage_id>"): the deterministic phase-hookCOMMENT
LOWbench/runner.go661 // The runner records the journey as unsupported rather than a false pass.COMMENT
LOWbench/runner.go681 // expensive one — a shape from a closed vocabulary plus a quote of theCOMMENT
LOWbench/runner.go701//COMMENT
LOWbench/axis.go1package mainCOMMENT
LOWbench/axis.go21// away in a footnote, it is confined here. An axis carries its own properties,COMMENT
LOWbench/axis.go41 // these journeys, and how it fails when the coupling it depends on moves.COMMENT
LOWbench/journeys_manifest_test.go21// or vanish unnoticed. What changed is how it is recorded. A single integerCOMMENT
LOWbench/axis_damaged_store_closure.go21// negotiated `review status --next-transition` route (Slice S4). These fourCOMMENT
LOWbench/axis_damaged_store_closure.go61// first, damage last).COMMENT
LOWbench/axis_damaged_store_closure.go81// (forgedRecoveryPair + forgedRecoveryDescendant, seed damaged before itsCOMMENT
LOWbench/axis_damaged_store_closure.go181// compactRecoveryAuthorizationBinding's own six-field domain (schema,COMMENT
LOWbench/axis_damaged_store_closure.go421// last open gap: the spec's "interrupt at each ordered position" isCOMMENT
LOWbench/axis_damaged_store_closure.go641 Title: "A closure genuinely interrupted right after its " + role.label + "'s " + phase + " phase resumes byte-identicCOMMENT
LOWbench/axis_damaged_store_closure.go741 {Name: "the closure's own predecessor never moved either", Composite: requireUnrelatedPredecessorByteIdentical},COMMENT
LOWbench/axis_damaged_store.go561 return fmt.Errorf("fixture claims a captured reviewer result but the successor holds no reviewer-results artifact: %v"COMMENT
LOWbench/axis_damaged_store.go661 payload, err := os.ReadFile(path)COMMENT
LOWbench/axis_damaged_store.go701 }COMMENT
LOWbench/axis_damaged_store.go1181// plan's repository binding or anomaly class — see apply-progress's S3COMMENT
LOWbench/journeys.go441COMMENT
LOWbench/axis_compatibility.go1package mainCOMMENT
LOWbench/classify.go21 // StdoutCaptured / StderrCaptured are false when the stream was aCOMMENT
LOWbench/classify.go81 {ByDesignHumanAuthority, "the block is a human decision by design"},COMMENT
LOWbench/classify.go281 }COMMENT
LOWbench/classify.go341COMMENT
LOWbench/classify.go481 text := o.Stdout + "\n" + o.StderrCOMMENT
LOWbench/classify.go501// action is verified in the emitted bytes -> by_designCOMMENT
LOWbench/journeys_managed_assets.go41 if !bytes.Equal(copied, historicalManagedAssetState) {COMMENT
LOWbench/record.go221}COMMENT
LOWbench/classify_test.go41// than by what a test author imagines a refusal looks like.COMMENT
LOWbench/analyze.go1package mainCOMMENT
LOWbench/journeys_edge.go21// own preconditionCOMMENT
LOWbench/journeys_edge.go881// ---------------------------------------------------------------------------COMMENT
LOWbench/main.go1// Command gentle-ai-bench measures the FRICTION of driving gentle-ai's reviewCOMMENT
LOWbench/main.go221COMMENT
LOWdeploy/telemetry/victoria-metrics-scrape.yaml1# Promscrape configuration for VictoriaMetrics: one job scraping theCOMMENT
LOWdeploy/telemetry/install.sh1#!/usr/bin/env bashCOMMENT
LOWdeploy/telemetry/install.sh21# gentle-telemetry (cmd/gentle-telemetry) is not yet wired intoCOMMENT
LOWdeploy/telemetry/install.sh521 # frser-sqlite-datasource v3+ requires this to open a local filesystemCOMMENT
LOWdeploy/telemetry/install.sh541 chmod 0600 "${GRAFANA_ADMIN_PASSWORD_FILE}"COMMENT
LOWdeploy/telemetry/install.sh561 # would widen that directory past the exactly-0700 mode systemdCOMMENT
LOWdeploy/telemetry/gentle-telemetry-backup.test.sh1#!/usr/bin/env bashCOMMENT
LOW…emetry/grafana/provisioning/datasources/telemetry.yaml1# Grafana datasource provisioning for the gentle-telemetry SQLite database.COMMENT
LOW…emetry/grafana/provisioning/datasources/telemetry.yaml21 jsonData:COMMENT
LOWinternal/recoverytrace/rows.go1package recoverytraceCOMMENT
LOWinternal/recoverytrace/rows.go21// CREATE that has already landed, MODIFY, or KEEP is a KEEP row, because theCOMMENT
LOWinternal/recoverytrace/rows.go701 }COMMENT
LOWinternal/recoverytrace/rows.go841// plane. Each is unpublished on every ref, so the early-removal deviation isCOMMENT
LOWinternal/recoverytrace/rows.go861 // rarSharedSecurityDescriptorOwnedByCurrentProcess), withCOMMENT
LOWinternal/recoverytrace/rows.go881 Contributor: recoveryContributor,COMMENT
LOWinternal/recoverytrace/rows.go901 Context: ContextEPD,COMMENT
LOWinternal/recoverytrace/rows.go1021// removed without authorization from any design.COMMENT
LOWinternal/testsupport/windowsrunner/doc.go1// Package windowsrunner prepares a Windows test process so Gentle ShellCOMMENT
LOWinternal/providercontractbundle/bundle.go41 bundleFixedFileCount = 8COMMENT
LOWinternal/providercontractbundle/bundle.go61// bumped CONTRACT_SEMVER to 1.2.0). The same backward-compatibility ruleCOMMENT
LOWinternal/providercontractbundle/bundle.go161// file-subagent surface to splice generic SDD composition into), so thisCOMMENT
LOWinternal/providercontractbundle/bundle_test.go21)COMMENT
590 more matches not shown…
Hyper-Verbose Identifiers155 hits · 171 pts
SeverityFileLineSnippetContext
LOW⚡…loy/telemetry/scripts/backfill_victoriametrics_test.py121 def test_empty_becomes_unknown(self):CODE
LOW⚡…loy/telemetry/scripts/backfill_victoriametrics_test.py125 def test_escapes_backslash_quote_newline_in_order(self):CODE
LOW⚡…loy/telemetry/scripts/backfill_victoriametrics_test.py133 def test_ordinary_value_untouched(self):CODE
LOW⚡…loy/telemetry/scripts/backfill_victoriametrics_test.py141 def test_quoted_sentinel_is_zero(self):CODE
LOW⚡…loy/telemetry/scripts/backfill_victoriametrics_test.py160 def test_row_base_labels_match_go_order(self):CODE
LOW⚡…loy/telemetry/scripts/backfill_victoriametrics_test.py168 def test_token_kinds_match_go_order(self):CODE
LOW⚡…loy/telemetry/scripts/backfill_victoriametrics_test.py176 def test_token_state_order_matches_go(self):CODE
LOW⚡…loy/telemetry/scripts/backfill_victoriametrics_test.py181 def test_rows_by_evidence_labels_match_go_order(self):CODE
LOW⚡…loy/telemetry/scripts/backfill_victoriametrics_test.py189 def test_metric_family_order_matches_go(self):CODE
LOW⚡…loy/telemetry/scripts/backfill_victoriametrics_test.py267 def test_only_two_timestamps_are_emitted(self):CODE
LOW⚡…loy/telemetry/scripts/backfill_victoriametrics_test.py272 def test_no_deliveries_emits_nothing(self):CODE
LOW⚡…loy/telemetry/scripts/backfill_victoriametrics_test.py277 def test_stream_lines_reports_stats_and_matches_build_lines(self):CODE
LOW⚡…loy/telemetry/scripts/backfill_victoriametrics_test.py287 def test_post_chunks_splits_by_chunk_size(self):CODE
LOW⚡…loy/telemetry/scripts/backfill_victoriametrics_test.py442 def test_dry_run_prints_counts_and_makes_no_request(self):CODE
LOW⚡…loy/telemetry/scripts/backfill_victoriametrics_test.py447 def test_import_reaches_fake_server(self):CODE
LOW⚡…loy/telemetry/scripts/backfill_victoriametrics_test.py455 def test_verify_passes_when_server_reports_matching_sums(self):CODE
LOW…loy/telemetry/scripts/backfill_victoriametrics_test.py220 def test_deliveries_total_and_rows_total_lines(self):CODE
LOW…loy/telemetry/scripts/backfill_victoriametrics_test.py303 def test_post_chunks_accepts_a_generator(self):CODE
LOW…loy/telemetry/scripts/backfill_victoriametrics_test.py469 def test_verify_fails_when_server_reports_mismatching_sums(self):CODE
LOW…a/released/v3.7.0/plugins/sdd-task-result-artifacts.ts66function canonicalizeSDDPreflightQuestions(args: unknown): void {CODE
LOW…a/released/v3.7.0/plugins/sdd-task-result-artifacts.ts104function normalizeSDDPreflightAnswer(value: string): string {CODE
LOW…eleased/v3.7.0/plugins-v2/sdd-task-result-artifacts.ts64function canonicalizeSDDPreflightQuestions(args: unknown): void {CODE
LOW…eleased/v3.7.0/plugins-v2/sdd-task-result-artifacts.ts101function normalizeSDDPreflightAnswer(value: string): string {CODE
LOW…testdata/released/v1.33.2/plugins/background-agents.ts438async function parseAgentWriteCapability(CODE
LOW…testdata/released/v1.7.19/plugins/background-agents.ts418async function parseAgentWriteCapability(CODE
LOWscripts/test-opencode-v2-host.py47def wait_for_missing_sdk_refusal(fetch, expected, timeout=15, clock=time.monotonic, sleep=time.sleep):CODE
LOW⚡scripts/test_opencode_v2_host_test.py49 def test_cold_inventory_waits_for_active_same_host(self):CODE
LOW⚡scripts/test_opencode_v2_host_test.py53 def test_builtin_inventory_does_not_hide_active_managed_plugins(self):CODE
LOW⚡scripts/test_opencode_v2_host_test.py57 def test_failed_activation_is_not_success(self):CODE
LOW⚡scripts/test_opencode_v2_host_test.py61 def test_missing_activation_is_bounded(self):CODE
LOW⚡scripts/test_opencode_v2_host_test.py65 def test_duplicate_active_inventory_is_not_success(self):CODE
LOW⚡scripts/test_opencode_v2_host_test.py72 def test_parent_requests_foreground_child(self):CODE
LOW⚡scripts/test_opencode_v2_host_test.py83 def test_child_returns_raw_sentinel(self):CODE
LOW⚡scripts/test_opencode_v2_host_test.py87 def test_unexpected_model_refuses(self):CODE
LOW⚡scripts/test_opencode_v2_host_test.py92 def test_parent_returns_only_after_tool_result(self):CODE
LOW⚡scripts/test_opencode_v2_host_test.py98 def test_cli_requires_explicit_version_and_temp_root_before_launch(self):CODE
LOW⚡scripts/test_opencode_v2_host_test.py107 def test_modes_are_exclusive_and_tmpdir_is_explicit_fallback(self):CODE
LOW⚡scripts/test_opencode_v2_host_test.py115 def test_generic_responder_refuses_review_even_after_tool_result(self):CODE
LOW⚡scripts/test_opencode_v2_host_test.py121 def test_generic_config_allows_only_fixture_child(self):CODE
LOW⚡scripts/test_opencode_v2_host_test.py629 def test_missing_sdk_active_plugin_is_an_unsafe_finding(self):CODE
LOW⚡scripts/test_opencode_v2_host_test.py637 def test_missing_sdk_mode_refuses_present_sdk_before_launch(self):CODE
LOW⚡scripts/test_opencode_v2_host_test.py646 def test_missing_sdk_flag_requires_installed_mode(self):CODE
LOW⚡scripts/test_opencode_v2_host_test.py669 def test_idless_failures_are_matched_by_installed_source(self):CODE
LOW⚡scripts/test_opencode_v2_host_test.py678 def test_active_managed_plugin_is_never_a_refusal(self):CODE
LOW⚡scripts/test_opencode_v2_host_test.py683 def test_failure_without_reason_or_duplicate_is_rejected(self):CODE
LOW⚡scripts/test_opencode_v2_host_test.py689 def test_absent_refusal_is_bounded(self):CODE
LOW⚡scripts/test_opencode_v2_host_test.py693 def test_failure_causes_extract_bounded_cause_for_each_ref(self):CODE
LOW⚡scripts/test_opencode_v2_host_test.py778 def test_parent_dispatches_the_marked_step_as_a_foreground_subagent(self):CODE
LOW⚡scripts/test_opencode_v2_host_test.py788 def test_parent_forwards_requested_refusal_arguments(self):CODE
LOW⚡scripts/test_opencode_v2_host_test.py795 def test_parent_finishes_after_tool_result(self):CODE
LOW⚡scripts/test_opencode_v2_host_test.py800 def test_child_replays_the_dispatched_step_or_its_http_error(self):CODE
LOW⚡scripts/test_opencode_v2_host_test.py809 def test_unmarked_parent_and_unknown_model_refuse(self):CODE
LOW⚡scripts/test_opencode_v2_host_test.py818 def test_provider_serves_scripted_http_error_without_fixture_failure(self):CODE
LOW⚡scripts/test_opencode_v2_host_test.py878 def test_admitted_step_requires_materialized_child_and_bound_parent_result(self):CODE
LOW⚡scripts/test_opencode_v2_host_test.py881 def test_admitted_step_tolerates_only_the_observed_host_subagent_preamble(self):CODE
LOW⚡scripts/test_opencode_v2_host_test.py888 def test_admitted_step_rejects_raw_host_prompt_and_unrewritten_child_output(self):CODE
LOWscripts/test_opencode_v2_host_test.py26 def test_observed_host_version_matches_selector(self):CODE
LOWscripts/test_opencode_v2_host_test.py133 def test_generic_dispatch_never_requests_shell_or_review(self):CODE
LOWscripts/test_opencode_v2_host_test.py151 def test_generic_host_sandbox_includes_version_and_cleanup(self):CODE
LOWscripts/test_opencode_v2_host_test.py176 def test_generic_main_uses_only_inventory_and_generic_dispatch(self):CODE
95 more matches not shown…
Structural Annotation Overuse45 hits · 75 pts
SeverityFileLineSnippetContext
LOW⚡PRD-AGENT-BUILDER.md494│ │ ├── agent_builder_engine.go # Step 1: Engine selectionCODE
LOW⚡PRD-AGENT-BUILDER.md495│ │ ├── agent_builder_prompt.go # Step 2: Description inputCODE
LOW⚡PRD-AGENT-BUILDER.md496│ │ ├── agent_builder_sdd.go # Step 3: SDD integrationCODE
LOW⚡PRD-AGENT-BUILDER.md497│ │ ├── agent_builder_generating.go # Step 4: Generation progressCODE
LOW⚡PRD-AGENT-BUILDER.md498│ │ ├── agent_builder_preview.go # Step 5: Preview + editCODE
LOW⚡PRD-AGENT-BUILDER.md499│ │ └── agent_builder_complete.go # Step 6: Installation completeCODE
LOW⚡PRD-AGENT-BUILDER.md531 // Step 1: Selected generation engineCOMMENT
LOW⚡PRD-AGENT-BUILDER.md535 // Step 2: User promptCOMMENT
LOW⚡PRD-AGENT-BUILDER.md539 // Step 3: SDD integrationCOMMENT
LOW⚡PRD-AGENT-BUILDER.md543 // Step 4: GenerationCOMMENT
LOW⚡PRD-AGENT-BUILDER.md547 // Step 5: PreviewCOMMENT
LOW⚡PRD-AGENT-BUILDER.md551 // Step 6: InstallationCOMMENT
LOW⚡internal/agentbuilder/integration_test.go41 // Step 1: Compose prompt.COMMENT
LOW⚡internal/agentbuilder/integration_test.go49 // Step 2: Call MockEngine.Generate with the prompt.COMMENT
LOW⚡internal/agentbuilder/integration_test.go61 // Step 3: Parse the result.COMMENT
LOW⚡internal/agentbuilder/integration_test.go67 // Step 4: Assert GeneratedAgent has correct fields.COMMENT
LOWinternal/agentbuilder/integration_test.go81 // Step 5: Call Install with temp dirs.COMMENT
LOWinternal/agentbuilder/integration_test.go95 // Step 6: Assert files written.COMMENT
LOWinternal/agentbuilder/integration_test.go115 // Step 7: Call LoadRegistry, add entry, verify entry added.COMMENT
LOW⚡internal/tui/model_test.go3426 // Step 1: from ScreenModelConfig, cursor=0 → goes to ClaudeModelPicker with ModelConfigMode=true.COMMENT
LOWinternal/tui/model_test.go3441 // Step 2: from ClaudeModelPicker (ModelConfigMode=true), cursor=0 (balanced preset), enterCOMMENT
LOWinternal/tui/model_test.go6119 // Step 1: execute the goroutine cmd → should produce UpgradeDoneMsg.COMMENT
LOWinternal/tui/model_test.go6145 // Step 2: feed UpgradeDoneMsg into the model returned by the keypressCOMMENT
LOWinternal/components/filemerge/yaml.go305 // Step 1: Find the top-level mcp_servers: key.COMMENT
LOWinternal/components/filemerge/yaml.go327 // Step 2: Find the child region of mcp_servers:.COMMENT
LOWinternal/components/filemerge/yaml.go341 // Step 3: Within the region, find the server key at exactly 2-space indent.COMMENT
LOWinternal/components/filemerge/yaml.go361 // Step 4: Within the server's sub-block, find the command: line.COMMENT
LOW…acyassets/testdata/v3.7.0/opencode-prompt-sdd-apply.md67### Step 1: Load SkillsCOMMENT
LOW…acyassets/testdata/v3.7.0/opencode-prompt-sdd-apply.md70### Step 2: Read ContextCOMMENT
LOW…acyassets/testdata/v3.7.0/opencode-prompt-sdd-apply.md116### Step 3: Read Testing Capabilities and Resolve ModeCOMMENT
LOW…acyassets/testdata/v3.7.0/opencode-prompt-sdd-apply.md163### Step 4: Implement Tasks (Standard Workflow)COMMENT
LOW…acyassets/testdata/v3.7.0/opencode-prompt-sdd-apply.md178### Step 5: Mark Tasks CompleteCOMMENT
LOW…acyassets/testdata/v3.7.0/opencode-prompt-sdd-apply.md190### Step 6: Persist ProgressCOMMENT
LOW…acyassets/testdata/v3.7.0/opencode-prompt-sdd-apply.md207### Step 7: Return SummaryCOMMENT
LOWinternal/components/persona/inject_test.go2072 // Step 1: install gentleman — creates output-styles/gentleman.md and sets outputStyle in settings.json.COMMENT
LOWinternal/components/persona/inject_test.go2096 // Step 2: switch to neutral — should clean both residuals.COMMENT
LOWinternal/components/persona/inject_test.go2190 // Step 1: install gentleman — agent.gentleman key must appear in opencode.json.COMMENT
LOWinternal/components/persona/inject_test.go2222 // Step 2: switch to neutral — agent.gentleman must be removed.COMMENT
LOWinternal/assets/skills/_shared/skill-resolver.md15### Step 1: Obtain the Skill RegistryCOMMENT
LOWinternal/assets/skills/_shared/skill-resolver.md25### Step 2: Match Relevant SkillsCOMMENT
LOWinternal/assets/skills/_shared/skill-resolver.md36### Step 3: Pass Skill PathsCOMMENT
LOWinternal/assets/skills/_shared/skill-resolver.md51### Step 4: Report ResolutionCOMMENT
LOW⚡e2e/e2e_test.sh1391 # Step 1: Install persona and memory with gentleman.COMMENT
LOW⚡e2e/e2e_test.sh1398 # Step 2: Switch to neutral personaCOMMENT
LOW⚡e2e/e2e_test.sh1401 # Step 3: Verify sections survivedCOMMENT
Empty Error Handlers11 hits · 55 pts
SeverityFileLineSnippetContext
HIGHdeploy/telemetry/scripts/backfill-victoriametrics.py455except urllib.error.URLError:CODE
HIGHscripts/test-opencode-v2-host.py95except ProcessLookupError:CODE
HIGHscripts/test-opencode-v2-host.py102except ProcessLookupError:CODE
HIGHscripts/test-opencode-v2-host.py307except ProcessLookupError:CODE
HIGHe2e/shell-linux-user-install-guest.py380except Exception:CODE
HIGHe2e/shell-linux-user-install-guest.py391except Exception:CODE
HIGHe2e/shell-macos-ci-contract.test.py99except ValueError:CODE
HIGHe2e/shell-macos-qualification.py180except ProcessLookupError:CODE
HIGHe2e/shell-macos-qualification.py185except (OSError, subprocess.TimeoutExpired):CODE
HIGHe2e/shell-macos-qualification.py189except subprocess.TimeoutExpired:CODE
HIGHe2e/shell-native-global-mirror.py187except OSError:CODE
Cross-Language Confusion6 hits · 42 pts
SeverityFileLineSnippetContext
HIGH⚡scripts/opencode_v2_loopback.py198 registrations.push(await ctx.session.hook("title", call => {call.result="Fixture title"}))CODE
HIGH⚡scripts/opencode_v2_loopback.py199 registrations.push(await ctx.session.hook("context", call => {log({type:"context",agent:call.agent,system:call.system,tCODE
HIGH⚡scripts/opencode_v2_loopback.py200 registrations.push(await ctx.session.hook("http.request", call => {CODE
HIGH⚡scripts/opencode_v2_loopback.py204 registrations.push(await ctx.tool.hook("execute.before", call => {if(call.tool==="subagent")log({type:"before",id:call.CODE
HIGH⚡scripts/opencode_v2_loopback.py205 registrations.push(await ctx.tool.hook("execute.after", call => {if(call.tool==="subagent")log({type:"after",id:call.idCODE
HIGHe2e/shell-macos-ci-contract.test.py134 self.assertIn('github.event.pull_request.number || github.sha }}', self.text)CODE
Verbosity Indicators22 hits · 36 pts
SeverityFileLineSnippetContext
LOW⚡internal/agentbuilder/integration_test.go41 // Step 1: Compose prompt.COMMENT
LOW⚡internal/agentbuilder/integration_test.go49 // Step 2: Call MockEngine.Generate with the prompt.COMMENT
LOW⚡internal/agentbuilder/integration_test.go61 // Step 3: Parse the result.COMMENT
LOW⚡internal/agentbuilder/integration_test.go67 // Step 4: Assert GeneratedAgent has correct fields.COMMENT
LOWinternal/agentbuilder/integration_test.go81 // Step 5: Call Install with temp dirs.COMMENT
LOWinternal/agentbuilder/integration_test.go95 // Step 6: Assert files written.COMMENT
LOWinternal/agentbuilder/integration_test.go115 // Step 7: Call LoadRegistry, add entry, verify entry added.COMMENT
LOW⚡internal/tui/model_test.go3426 // Step 1: from ScreenModelConfig, cursor=0 → goes to ClaudeModelPicker with ModelConfigMode=true.COMMENT
LOWinternal/tui/model_test.go3441 // Step 2: from ClaudeModelPicker (ModelConfigMode=true), cursor=0 (balanced preset), enterCOMMENT
LOWinternal/tui/model_test.go6119 // Step 1: execute the goroutine cmd → should produce UpgradeDoneMsg.COMMENT
LOWinternal/tui/model_test.go6145 // Step 2: feed UpgradeDoneMsg into the model returned by the keypressCOMMENT
LOWinternal/components/filemerge/yaml.go305 // Step 1: Find the top-level mcp_servers: key.COMMENT
LOWinternal/components/filemerge/yaml.go327 // Step 2: Find the child region of mcp_servers:.COMMENT
LOWinternal/components/filemerge/yaml.go341 // Step 3: Within the region, find the server key at exactly 2-space indent.COMMENT
LOWinternal/components/filemerge/yaml.go361 // Step 4: Within the server's sub-block, find the command: line.COMMENT
LOWinternal/components/persona/inject_test.go2072 // Step 1: install gentleman — creates output-styles/gentleman.md and sets outputStyle in settings.json.COMMENT
LOWinternal/components/persona/inject_test.go2096 // Step 2: switch to neutral — should clean both residuals.COMMENT
LOWinternal/components/persona/inject_test.go2190 // Step 1: install gentleman — agent.gentleman key must appear in opencode.json.COMMENT
LOWinternal/components/persona/inject_test.go2222 // Step 2: switch to neutral — agent.gentleman must be removed.COMMENT
LOW⚡e2e/e2e_test.sh1391 # Step 1: Install persona and memory with gentleman.COMMENT
LOW⚡e2e/e2e_test.sh1398 # Step 2: Switch to neutral personaCOMMENT
LOW⚡e2e/e2e_test.sh1401 # Step 3: Verify sections survivedCOMMENT
Modern AI Meta-Vocabulary12 hits · 30 pts
SeverityFileLineSnippetContext
MEDIUMCONTRIBUTORS.md34| <img src="https://github.com/MzaGuille.png" alt="" width="40"> | Mza.Guille | [@MzaGuille](https://github.com/MzaGuillCODE
MEDIUMinternal/providercontractbundle/bundle_test.go542// gentle-pi mirrors (issue #4056): the orchestration file must be Pi's exactCOMMENT
MEDIUMinternal/agentbuilder/prompt.go195. ## Rules — Hard constraints and guardrails (what the agent must/must not do)CODE
MEDIUMinternal/model/codex_model_test.go302 // sdd-apply belongs to Código (sdd-mid): writing code in an agentic loop isCOMMENT
MEDIUMinternal/model/codex_preset_matrix_test.go7// code in an agentic loop where effort dominates, cheap lanes do structuredCOMMENT
MEDIUMdocs/releases/v2.2.0-closure-ledger.md407| #852 | statick88 | feat(kilocode): native SDD orchestration | ○ **conflicts (mechanical)** | 8/28 overlap; orchestratoCODE
MEDIUMdocs/audits/2026-07-21-rdd-system-audit.md887| [#1380](https://github.com/Gentleman-Programming/gentle-ai/issues/1380) — adaptive evidence-driven review | Open; apprCODE
MEDIUM…audits/2026-07-23-systemic-remediation-architecture.md779### 8.2 Anti-god-object guardrailsCOMMENT
MEDIUM…audits/2026-07-23-systemic-remediation-architecture.md832| [#852](https://github.com/Gentleman-Programming/gentle-ai/pull/852) | @statick88 | Extract Kilo capabilities/assets; dCODE
MEDIUM…its/2026-07-23-organic-recovery-implementation-plan.md103| [Generic orchestrator delegation rules](../../internal/assets/generic/sdd-orchestrator.md#delegation-rules) and their CODE
MEDIUModd/tasks/1731-parity-delegate-for-reason.md1# 1731-parity-delegate-for-reason: port gentle-shell #1731 orchestration rules to the gentle-ai canonCOMMENT
MEDIUM.github/workflows/promote-stable-rc.yml265 # The verifier is orchestration code, not a release artifact. It mustCOMMENT
Deep Nesting20 hits · 18 pts
SeverityFileLineSnippetContext
LOWdeploy/telemetry/scripts/backfill-victoriametrics.py341CODE
LOWdeploy/telemetry/scripts/backfill-victoriametrics.py500CODE
LOWscripts/test-opencode-v2-host.py47CODE
LOWscripts/test-opencode-v2-host.py77CODE
LOWscripts/test-opencode-v2-host.py91CODE
LOWscripts/test-opencode-v2-host.py277CODE
LOWscripts/test-opencode-v2-host.py314CODE
LOWscripts/test-opencode-v2-host.py463CODE
LOWscripts/opencode_v2_loopback.py252CODE
LOWscripts/test_opencode_v2_host_test.py15CODE
LOWscripts/test_opencode_v2_host_test.py341CODE
LOWscripts/test_opencode_v2_host_test.py500CODE
LOWe2e/shell-linux-user-install-guest.py165CODE
LOWe2e/shell-linux-user-install-guest.py348CODE
LOWe2e/shell-linux-user-install-guest.py532CODE
LOWe2e/shell-linux-user-install-guest.py265CODE
LOWe2e/shell-macos-ci-contract.test.py70CODE
LOWe2e/shell-macos-qualification.py302CODE
LOWe2e/shell-tui-acceptance.py118CODE
LOWe2e/shell-tui-acceptance.py350CODE
AI Slop Vocabulary5 hits · 16 pts
SeverityFileLineSnippetContext
MEDIUMinternal/app/selfupdate.go224 // Tradeoff: Unix loses seamless re-exec restart; mitigated by clear copy below.COMMENT
MEDIUMinternal/opencode/catalog_process_windows_test.go47// cleanup robust without racing the spawn.COMMENT
MEDIUM.github/workflows/shell-linux-first-ci.yml185 # The whole output stays withheld. The harness's last line is itsCOMMENT
MEDIUM⚡e2e/shell-macos-ci-contract.test.py265 # 4.5.x, whose installer pins a newer gentle-ai. The harness derivesCOMMENT
MEDIUMe2e/shell-macos-qualification.py59# repository's list copy so a newly reviewed release needs no harness change.COMMENT
Fake / Example Data12 hits · 12 pts
SeverityFileLineSnippetContext
LOWinternal/reviewtransaction/compact_fixture_test.go548 predecessor, _, successor, _ := preContractRecoveryFixture(t, repo, "placeholder", func(state *CompactState) {CODE
LOWinternal/reviewtransaction/bounded_lenses_test.go352 {name: "placeholder", value: "placeholder", wantErr: true},CODE
LOWinternal/reviewtransaction/transaction.go1735 case "n/a", "na", "none", "todo", "tbd", "pass", "passed", "success", "placeholder":CODE
LOWinternal/update/check_test.go159 if err := os.WriteFile(binaryPath, []byte("placeholder"), 0o755); err != nil {CODE
LOWinternal/update/upgrade/executor_test.go551 ".claude.json": `{"oauthAccount":{"emailAddress":"user@example.com"},"mcpServers":{"engCODE
LOWinternal/cli/sync_test.go1964 registryBefore := []byte(`{"oauthAccount":{"emailAddress":"user@example.com"},"mcpServers":{"codegraph":{"command":"codCODE
LOWinternal/cli/review_provider_roles.go891 value != "pass" && value != "passed" && value != "success" && value != "placeholder"CODE
LOWinternal/components/engram/inject_test.go1213 seed := []byte(`{"oauthAccount":{"emailAddress":"user@example.com"},"projects":{"/repo":{"allowedTools":[]}},"mcpServerCODE
LOWinternal/components/engram/inject_test.go1227 assertNestedString(t, registry, "user@example.com", "oauthAccount", "emailAddress")CODE
LOWinternal/components/mcp/inject_test.go585 userConfig := `{"oauthAccount":{"emailAddress":"user@example.com"},"projects":{"/repo":{"allowedTools":[]}},"mcpServersCODE
LOWinternal/components/uninstall/service_test.go1468 registry := []byte(`{"oauthAccount":{"emailAddress":"user@example.com"},"mcpServers":{"codegraph":{"command":"codegraphCODE
LOWinternal/components/uninstall/service_test.go1500 if got := remaining["oauthAccount"].(map[string]any)["emailAddress"]; got != "user@example.com" {CODE
Excessive Try-Catch Wrapping11 hits · 12 pts
SeverityFileLineSnippetContext
LOWscripts/opencode_v2_loopback.py300 except Exception as error: # A refused step may surface as a host error.STRING
LOWe2e/shell-linux-user-install-guest.py294 except Exception:CODE
LOWe2e/shell-linux-user-install-guest.py380 except Exception:CODE
LOWe2e/shell-linux-user-install-guest.py391 except Exception:CODE
LOWe2e/shell-linux-user-install-guest.py710 except Exception:CODE
LOWe2e/shell-linux-user-install-guest.py1238except Exception as error:CODE
MEDIUMe2e/shell-linux-user-install-guest.py265def do_GET(self):CODE
LOWe2e/shell-native-persistence-mirror.py64 except Exception:CODE
LOWe2e/shell-macos-qualification.py627 except Exception as error: # every failure becomes receipt evidenceCODE
LOWe2e/shell-native-global-mirror.py118 except Exception as error:CODE
LOWe2e/shell-native-global-mirror.py135 except Exception:CODE
Example Usage Blocks4 hits · 6 pts
SeverityFileLineSnippetContext
LOWdeploy/telemetry/install.sh13# Usage:COMMENT
LOW⚡scripts/install.sh8# Usage:COMMENT
LOWscripts/cross-lane-battery.sh7# Usage:COMMENT
LOWe2e/docker-test.sh4# Usage:COMMENT
Redundant / Tautological Comments2 hits · 3 pts
SeverityFileLineSnippetContext
LOWinternal/assets/gga/pr_mode.sh96 # Check if file matches any include patternCOMMENT
LOWinternal/assets/gga/pr_mode.sh117 # Check if file matches any exclude patternCOMMENT
Unused Imports2 hits · 2 pts
SeverityFileLineSnippetContext
LOW…loy/telemetry/scripts/backfill_victoriametrics_test.py17CODE
LOWe2e/shell-codegraph-shared-node.py4CODE
AI Structural Patterns2 hits · 2 pts
SeverityFileLineSnippetContext
LOW…loy/telemetry/scripts/backfill_victoriametrics_test.py37CODE
LOWdeploy/telemetry/scripts/backfill-victoriametrics.py114CODE