AI Slop Code Risk Monitor

gitbutlerapp/gitbutler

SlopCodeMonitor badge for gitbutlerapp/gitbutler Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

The GitButler version control client, backed by Git, powered by Tauri/Rust/Svelte

2.1 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for gitbutlerapp/gitbutler, a Rust project with 21,895 GitHub stars. SynthScan examined 747,702 lines of code across 2935 source files, recording 1245 pattern matches distributed across 14 syntactic categories. The legacy adjusted pattern signal is 2.1 (Low pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

2.1
Adjusted Signal
2.1
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
21.9K
Stars
Rust
Language
747.7K
Lines of Code
2.9K
Files
1.2K
Pattern Hits
2026-10-31
Scan Date
0.00
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.6/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.6/100 · LOW

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

Agent Over-Engineering Ratio 3.4/100 · LOW

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

PR Review Velocity Impact 9.5/100 · LOW

Which changes need focused human review? 1245 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 5HIGH 3MEDIUM 95LOW 1142

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 1245 distinct pattern matches across 14 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.

Over-Commented Block867 hits · 834 pts
SeverityFileLineSnippetContext
LOWCargo.toml1[workspace]COMMENT
LOWCargo.toml21 "crates/but-feedback", # 📄It's very small and very special, but documented and well-enough tested.COMMENT
LOWCargo.toml61 # 👉lacks top-level docs and docs.COMMENT
LOWCargo.toml81 "crates/but-transaction", # 📄TBDCOMMENT
LOWCargo.toml101 ##COMMENT
LOWdeny.toml1# This template contains all of the possible sections and their default valuesCOMMENT
LOWdeny.toml21# `target_family = "unix"` configuration, that only having windows targets inCOMMENT
LOWdeny.toml41#exclude = []COMMENT
LOWdeny.toml61COMMENT
LOWdeny.toml121]COMMENT
LOWdeny.toml161# This section is considered when running `cargo deny check bans`.COMMENT
LOWdeny.toml181# on a crate-by-crate basis if desired.COMMENT
LOWdeny.toml201#crate = "reqwest"COMMENT
LOWdeny.toml221skip = [COMMENT
LOWcrates/but-secret/src/secret.rs1//! This module contains facilities to handle the persistence of secrets.COMMENT
LOWcrates/gitbutler-repo/tests/repo/create_wd_tree.rs21/// These tests exercise the truth table that we use to update the HEADCOMMENT
LOWcrates/gitbutler-repo/src/commands.rs121 /// `FileInfo` stores valid text in `content` with no `mime_type`. Binary files either have noCOMMENT
LOWcrates/gitbutler-repo/src/commands.rs181COMMENT
LOWcrates/but-testsupport/src/in_memory_meta.rs221 branches: vec![stack_segment_from_partial_name(stack_name)],COMMENT
LOWcrates/but-testsupport/src/in_memory_meta.rs241 // .collect(),COMMENT
LOWcrates/but-transaction/src/lib.rs41/// Note this isn't fully ACID compliant database transactions but rather a "best effort" versionCOMMENT
LOWcrates/but-transaction/src/lib.rs61/// # Commit mappingCOMMENT
LOWcrates/gitbutler-watcher/src/handler.rs21COMMENT
LOW…ut-rebase/tests/rebase/graph_rebase/graph_workspace.rs1//! Snapshot tests for the [`GraphWorkspace`] projection, covering theCOMMENT
LOWcrates/but-rebase/src/lib.rs41 /// Squashes an existing commit into the one in the first `Pick` or `Merge` RebaseStep that precedes it.COMMENT
LOWcrates/but-rebase/src/lib.rs121 }COMMENT
LOWcrates/but-rebase/src/lib.rs161}COMMENT
LOWcrates/but-rebase/src/cherry_pick.rs1/// How to perform a cherry-pick.COMMENT
LOW…es/but-rebase/src/graph_rebase/merge_commit_changes.rs21/// parents.COMMENT
LOW…es/but-rebase/src/graph_rebase/merge_commit_changes.rs101 // As described in the module-level documentation, we stopCOMMENT
LOW…es/but-rebase/src/graph_rebase/merge_commit_changes.rs201/// First-parent metadata for a selected commit. This is subsequently used toCOMMENT
LOW…es/but-rebase/src/graph_rebase/merge_commit_changes.rs221}COMMENT
LOWcrates/but-rebase/src/graph_rebase/branch_stacks.rs21 workspace::is_workspace_commit,COMMENT
LOWcrates/but-rebase/src/graph_rebase/mod.rs41pub mod workspace;COMMENT
LOWcrates/but-rebase/src/graph_rebase/mod.rs61 /// Controls whether the resulting commit is signed.COMMENT
LOWcrates/but-rebase/src/graph_rebase/mod.rs201 /// an object asserts that the reciever has a selectable pick step in theCOMMENT
LOWcrates/but-rebase/src/graph_rebase/mod.rs261 /// The HEAD of the `repo` the editor was created for.COMMENT
LOWcrates/but-rebase/src/graph_rebase/mod.rs541 _ => bail!("Reference target in rebase result is not a commit"),COMMENT
LOWcrates/but-rebase/src/graph_rebase/cherry_pick.rs41 /// The shas of the commits that we were trying to cherry pick from.COMMENT
LOWcrates/but-rebase/src/graph_rebase/cherry_pick.rs61 WithRenames,COMMENT
LOWcrates/but-rebase/src/graph_rebase/cherry_pick.rs81/// When cherry-picking a commit onto two or more commits, we first find theCOMMENT
LOWcrates/but-rebase/src/graph_rebase/cherry_pick.rs101///COMMENT
LOWcrates/but-rebase/src/graph_rebase/cherry_pick.rs261 })COMMENT
LOWcrates/but-rebase/src/graph_rebase/cherry_pick.rs281/// `ontos`COMMENT
LOWcrates/but-rebase/src/graph_rebase/workspace.rs61COMMENT
LOWcrates/but-rebase/src/graph_rebase/workspace.rs81 /// consequence of how the editor's step graph is built, *not* of the rebaseCOMMENT
LOWcrates/but-rebase/src/graph_rebase/workspace.rs101 /// upstream, commits are still classified by their own branches' remotes.COMMENT
LOWcrates/but-rebase/src/graph_rebase/testing.rs701├───╯COMMENT
LOWcrates/but-rebase/src/graph_rebase/testing.rs841 fn three_way_fork_with_a_shared_target() {COMMENT
LOWcrates/but-rebase/src/graph_rebase/mutate.rs21 ///COMMENT
LOWcrates/but-rebase/src/graph_rebase/mutate.rs401 ///COMMENT
LOWcrates/but-rebase/src/graph_rebase/mutate.rs641 /// `nodes_to_connect` - Optional set of selector to connect instead of the parents/children determined.COMMENT
LOWcrates/but-rebase/src/graph_rebase/mutate.rs781 /// The segment is described by its delimiter: First (parent-most) and last (child-most) node.COMMENT
LOWcrates/but-rebase/src/graph_rebase/materialize.rs41COMMENT
LOWcrates/gitbutler-operating-modes/src/lib.rs81 /// The ref of the vbranch which owns this commit.COMMENT
LOWcrates/but-oplog/src/lib.rs1//! The operations log, short: Oplog, is a sequence of restore points, which each restore point implemented as snapshotsCOMMENT
LOWcrates/but-oplog/src/lib.rs21//! attach metadata about the operation that created them.COMMENT
LOWcrates/but-oplog/src/lib.rs41//! or leave no trace of ever running.COMMENT
LOWcrates/but-debugging/src/lib.rs1//! But Debugging contains utilities that aid in debugging gitbutler.COMMENT
LOWcrates/but-workspace/tests/workspace/graph.rs1//! Snapshot tests for [`detailed_graph_workspace`], mirroring the permutationsCOMMENT
807 more matches not shown…
Decorative Section Separators82 hits · 291 pts
SeverityFileLineSnippetContext
MEDIUM⚡crates/but-workspace/src/branch/mod.rs170//! ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡crates/but-workspace/src/branch/mod.rs172//! ├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡crates/but-workspace/src/branch/mod.rs174//! └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡crates/but-workspace/src/branch/mod.rs224//! │ e │ │ ├──────┴─────┐ ├──────┴─────┐ COMMENT
MEDIUM⚡crates/but-workspace/src/branch/mod.rs227//! │ A │ TMB◀─────┘ └─┘◀── feat └─────▶TMB └─┘◀──S:feat TMB └─┘◀──S:feat COMMENT
MEDIUM⚡crates/but-workspace/src/branch/mod.rs232//! │ │ └─┘───────────┘ WMB───────────┘ WMB───────────┘ COMMENT
MEDIUM⚡crates/but-workspace/src/branch/mod.rs259//! │ e │ COMMENT
MEDIUM⚡crates/but-workspace/src/branch/mod.rs262//! │ │ └──┘ └──┘ parentCOMMENT
MEDIUM⚡crates/but-workspace/src/branch/mod.rs263//! │ I │ │ │ COMMENT
MEDIUM⚡crates/but-workspace/src/branch/mod.rs265//! │ i │ ┌─┐ ┌─┐ ┌─┐ ┌─ S:feat/1 COMMENT
MEDIUM⚡crates/but-workspace/src/branch/mod.rs266//! │ t │ H:S:main H:S:main────▶└─┘ S:main ────▶└─┘◀── S:feat S:main ──▶└─┘◀┴─ B:feat S:maCOMMENT
MEDIUM⚡crates/but-workspace/src/branch/mod.rs269//! └───┘ Need ws/1 for metadata: - Need ws/1 for metadata: COMMENT
MEDIUM⚡crates/but-workspace/src/branch/mod.rs271//! - Stack name changed to COMMENT
MEDIUMcrates/but-workspace/src/branch/mod.rs185//! │ h │ │ │ ┌──────┴─────┐ │ ┌────COMMENT
MEDIUMcrates/but-workspace/src/branch/mod.rs193//! │ │ WMB───────────┘ WMB───────────┘ WMB───────────┘COMMENT
MEDIUMcrates/but-workspace/src/branch/mod.rs205//! │ a │ ┌──────┴─────┐COMMENT
MEDIUMcrates/but-workspace/src/branch/mod.rs213//! └───┘ └─┘───────────┘ WMB───────────┘ └─┘───────────┘COMMENT
MEDIUMcrates/but-workspace/src/branch/mod.rs287//! │ │ └─┘───────┘ └─┘───────┘ └─┘───────COMMENT
MEDIUMcrates/but-workspace/src/branch/mod.rs307//! │ h │ │ ┌─────┴────┐ │ │ COMMENT
MEDIUMcrates/but-workspace/src/branch/mod.rs315//! │ S │ └─┘────────┘ WMB─────────┘ └─┘────────┘ COMMENT
MEDIUMcrates/but-workspace/src/branch/mod.rs372//! │ e │ ┌──────┼──────┐ │ A ││ B ││ C │COMMENT
MEDIUMcrates/but-workspace/src/branch/mod.rs383//! └───┘ WMB───────┘ all commits at once.COMMENT
MEDIUMcrates/but-workspace/src/branch/mod.rs391//! │ n │ ┌──────┼──────┐ main┐COMMENT
MEDIUMcrates/but-workspace/src/branch/mod.rs403//! └───┘ └1┘───────┘ Problem is that lanes wouldn't haveCOMMENT
MEDIUM⚡crates/but-graph/src/lib.rs138//! ┌────────────────────┐COMMENT
MEDIUM⚡crates/but-graph/src/lib.rs140//! └────────────────────┘COMMENT
MEDIUM⚡crates/but-graph/src/lib.rs143//! ┌────────────────────────┐COMMENT
MEDIUM⚡crates/but-graph/src/lib.rs150//! └────────────────────────┘COMMENT
MEDIUM⚡crates/but-graph/src/lib.rs163//! ┌───────────────────┐COMMENT
MEDIUM⚡crates/but-graph/src/lib.rs165//! └───────────────────┘COMMENT
MEDIUM⚡crates/but-graph/src/lib.rs166//! │ ┌────────────────────┐COMMENT
MEDIUM⚡crates/but-graph/src/lib.rs168//! │ └────────────────────┘COMMENT
MEDIUM⚡crates/but-graph/src/lib.rs170//! │ ┌─────────┴─────────┐COMMENT
MEDIUM⚡crates/but-graph/src/lib.rs173//! │ ┌───────────────┐ │COMMENT
MEDIUM⚡crates/but-graph/src/lib.rs175//! │ └───────────────┘ ┌───────────────┐COMMENT
MEDIUM⚡crates/but-graph/src/lib.rs177//! │ ▼ └───────────────┘COMMENT
MEDIUM⚡crates/but-graph/src/lib.rs178//! │ ┌───────────────┐ │COMMENT
MEDIUM⚡crates/but-graph/src/lib.rs180//! │ └───────────────┘ │COMMENT
MEDIUM⚡crates/but-graph/src/lib.rs182//! │ └─────────┬─────────┘COMMENT
MEDIUM⚡crates/but-graph/src/lib.rs185//! │ ┌────────┐COMMENT
MEDIUM⚡crates/but-graph/src/lib.rs187//! └─────────────────▶│ ------ │COMMENT
MEDIUM⚡crates/but-graph/src/lib.rs189//! └────────┘COMMENT
MEDIUMcrates/but/skill/references/examples.md196# ────────COMMENT
MEDIUMcrates/but/skill/references/examples.md339# ──────────────────────────────────────────────────COMMENT
MEDIUMcrates/but/src/tui/editor.rs20// ── Hard wrap utility for commit messages ───────────────────────────────────COMMENT
MEDIUMcrates/but/src/tui/editor.rs70// ── Colour palette (inspired by the screenshot) ──────────────────────────────COMMENT
MEDIUMcrates/but/src/tui/editor.rs88// ── Editor mode ──────────────────────────────────────────────────────────────COMMENT
MEDIUMcrates/but/src/tui/editor.rs97// ── Menu definitions ─────────────────────────────────────────────────────────COMMENT
MEDIUM⚡crates/but/src/tui/editor.rs155// ── Help overlay ─────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡crates/but/src/tui/editor.rs162// ── About overlay ────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡crates/but/src/tui/editor.rs169// ── Editor state ─────────────────────────────────────────────────────────────COMMENT
MEDIUMcrates/but/src/tui/editor.rs233 // ── Cursor helpers ───────────────────────────────────────────────────COMMENT
MEDIUMcrates/but/src/tui/editor.rs261 // ── Edit operations ──────────────────────────────────────────────────COMMENT
MEDIUMcrates/but/src/tui/editor.rs310 // ── Menu action dispatch ─────────────────────────────────────────────COMMENT
MEDIUMcrates/but/src/tui/editor.rs335 // ── Input handling ───────────────────────────────────────────────────COMMENT
MEDIUMcrates/but/src/tui/editor.rs377 // ── Ctrl shortcuts ────────────────────────────────COMMENT
MEDIUMcrates/but/src/tui/editor.rs385 // ── Navigation ────────────────────────────────────COMMENT
MEDIUMcrates/but/src/tui/editor.rs454 // ── Text editing ──────────────────────────────────COMMENT
MEDIUMcrates/but/src/tui/editor.rs650 // ── Dropdown rect calculation ────────────────────────────────────────COMMENT
MEDIUMcrates/but/src/tui/editor.rs669// ── Rendering ────────────────────────────────────────────────────────────────COMMENT
22 more matches not shown…
Hyper-Verbose Identifiers200 hits · 218 pts
SeverityFileLineSnippetContext
LOWpackages/ui-svelte/tests/test-utils.ts143export async function waitForTextContentWithIdle(CODE
LOWpackages/ui-svelte/tests/test-utils.ts334export async function waitForScrollHeightIncrease(CODE
LOWpackages/ui-svelte/tests/test-utils.ts466export async function waitForScrollHeightChange(CODE
LOWpackages/ui-svelte/tests/HardWrapPlugin.spec.ts26async function waitForParagraphCountGreaterThan(CODE
LOWpackages/ui-svelte/tests/HardWrapPlugin.spec.ts154 initialText: "```javascript\nfunction veryLongFunctionNameThatExceedsMax() {}\n```",CODE
LOWpackages/ui-svelte/src/lib/utils/timeAgo.ts145function getSecondsUntilTimestampUpdate(seconds: number): number {CODE
LOWpackages/ui-svelte/src/lib/utils/diffParsing.ts551function computeBaseInlineWordDiff(CODE
LOWpackages/ui-svelte/src/lib/utils/tooltipPosition.ts56function calculateHorizontalAlignment(CODE
LOWpackages/ui-svelte/src/lib/utils/tooltipPosition.ts81function autoDetectHorizontalAlignment(measurements: MeasurementCache): {CODE
LOWpackages/ui-svelte/src/lib/utils/tooltipPosition.ts107function calculateVerticalPosition(CODE
LOWpackages/ui-svelte/src/lib/focus/domUtils.ts25export function findNearestSuitableAncestor(element: HTMLElement): {CODE
LOWpackages/ui-svelte/src/lib/focus/shortcutUtils.ts11export function generateTwoLetterShortcut(used: Map<string, unknown>): string | undefined {CODE
LOW…ckages/ui-svelte/src/lib/components/VirtualList.svelte693 async function handleItemsRemovedOrReplaced(): Promise<void> {CODE
LOW…ckages/ui-svelte/src/lib/components/VirtualList.svelte733 function compensateScrollForResize(index: number, oldHeight: number): void {CODE
LOWpackages/ui-svelte/src/lib/richText/linewrap.ts122function isLogicalParagraphBoundary(para: ParagraphNode, previousIndent: string): boolean {CODE
LOWpackages/ui-svelte/src/lib/richText/linewrap.ts158function combineLogicalParagraphText(CODE
LOWpackages/ui-svelte/src/lib/richText/linewrap.ts207function updateParagraphsWithWrappedLines(CODE
LOW…ui-svelte/src/lib/richText/plugins/IndentPlugin.svelte17 function normalizeNonSimpleTextNode(CODE
LOW…s/ui-svelte/src/lib/richText/plugins/InlineCode.svelte18 function inlineCodeTextNodeTransform(node: TextNode): void {CODE
LOW…svelte/src/lib/richText/plugins/HardWrapPlugin.test.ts666 function inlineCodeTextNodeTransform(node: TextNode): void {CODE
LOWpackages/ui-svelte/src/lib/richText/node/mention.ts148function getTextSurroundingMention(text: string, start: number, end: number): [string, string] {CODE
LOWpackages/ui-svelte/src/lib/richText/node/emoji.ts193export function findAndReplaceShortCodeEmoji(node: TextNode): TextNode | undefined {CODE
LOWpackages/shared/src/lib/persisted.ts50 function setAndPersist(value: T, set: (value: T) => void) {CODE
LOWpackages/shared/src/lib/persisted.ts129 function setAndPersist(value: T, set: (value: T) => void) {CODE
LOWpackages/shared/src/lib/contributors.ts14async function getUsersWithAvatarsFromMails(userEmails: string[]) {CODE
LOWpackages/shared/src/lib/contributors.ts38async function getAvatarsForContributors(contributors: UserMaybe[]) {CODE
LOW⚡packages/shared/src/lib/contributors.ts50export async function getContributorsWithAvatars(branch: Branch) {CODE
LOW⚡packages/shared/src/lib/contributors.ts54export async function getPatchContributorsWithAvatars(patch: PatchCommit) {CODE
LOW⚡packages/shared/src/lib/contributors.ts58export async function getPatchApproversWithAvatars(patch: PatchCommit) {CODE
LOW⚡packages/shared/src/lib/contributors.ts62export async function getPatchApproversAllWithAvatars(patch: PatchCommit) {CODE
LOW⚡packages/shared/src/lib/contributors.ts66export async function getPatchRejectorsWithAvatars(patch: PatchCommit) {CODE
LOW⚡packages/shared/src/lib/contributors.ts70export async function getPatchRejectorsAllWithAvatars(patch: PatchCommit) {CODE
LOW⚡packages/shared/src/lib/contributors.ts74export async function getPatchViewersWithAvatars(patch: PatchCommit) {CODE
LOW⚡packages/shared/src/lib/contributors.ts78export async function getPatchReviewersAllWithAvatars(patch: PatchCommit) {CODE
LOW⚡packages/shared/src/lib/contributors.ts83export async function getPatchViewersAllWithAvatars(patch: PatchCommit) {CODE
LOW…shared/src/lib/organizations/projectsPreview.svelte.ts53export function getRecentlyInteractedProjects(inView?: InView): Reactive<LoadableProject[]> {CODE
LOW…shared/src/lib/organizations/projectsPreview.svelte.ts68export function getRecentlyPushedProjects(inView?: InView): Reactive<LoadableProject[]> {CODE
LOW…shared/src/lib/organizations/projectsPreview.svelte.ts98export function getFeedIdentityForRepositoryId(CODE
LOWpackages/shared/src/lib/settings/types.ts21export function apiToNotificationSettings(CODE
LOWpackages/shared/src/lib/settings/types.ts59export function notificationSettingsToApi(CODE
LOW…rc/lib/settings/notificationSetttingsPreview.svelte.ts8export function getNotificationSettingsInterest(CODE
LOW…ages/shared/src/lib/chat/chatChannelsPreview.svelte.ts33export function getChatChannelParticipants(CODE
LOWpackages/shared/src/lib/chat/types.ts76export function apiToChatMessageInReplyTo(CODE
LOWpackages/shared/src/lib/chat/types.ts239export function toApiCreateChatMessageParams(CODE
LOWpackages/shared/src/lib/chat/types.ts282export function toApiPatchChatMessageParams(CODE
LOWpackages/shared/src/lib/patchEvents/types.ts310export function createPatchEventChannelKey(CODE
LOWpackages/shared/src/lib/branches/utils.ts37export function getMultipleContributorNames(contributors: UserMaybe[]): string {CODE
LOW…ages/shared/src/lib/branches/branchesPreview.svelte.ts18export function getBranchReviewsForRepository(CODE
LOWpackages/but-mcp-app/src/WorkspaceApp.tsx95function graphStatusFromPushStatus(status: PushStatus | undefined): GraphStatus {CODE
LOWpackages/but-mcp-app/src/WorkspaceApp.tsx165function workspaceViewFromToolResult(result: ToolResult): WorkspaceView | null {CODE
LOWe2e/playwright/tests/unifiedDiffView.spec.ts98async function seedRemoteFileAndCloneFresh(CODE
LOWe2e/playwright/tests/startTheApp.spec.ts17async function addProjectAndOpenWorkspace(CODE
LOWe2e/playwright/tests/prAssociation.spec.ts125async function storeFakeGitHubEnterprisePat(page: Page, server: FakeGitHubServer) {CODE
LOWe2e/playwright/tests/moveCommitToNewStack.spec.ts11async function applyTwoIndependentStacks(gitbutler: GitButler, page: Page) {CODE
LOWe2e/playwright/tests/forge.spec.ts34async function openWorkspaceWithMockedPr(CODE
LOWe2e/playwright/tests/forge.spec.ts124async function openGithubPrWithChecksRoute(CODE
LOWe2e/playwright/tests/projectOffboarding.spec.ts5async function openProjectSettingsAndDelete(page: import("@playwright/test").Page) {CODE
LOWe2e/playwright/tests/branches.spec.ts38async function applyBranchFromBranchesView(page: Page, branchName: string) {CODE
LOWe2e/playwright/tests/branches.spec.ts63async function openProjectWithFakeGitHub(CODE
LOWe2e/playwright/tests/branches.spec.ts75async function applyReviewFromBranchesView(page: Page, title: string) {CODE
140 more matches not shown…
Hallucination Indicators5 hits · 50 pts
SeverityFileLineSnippetContext
CRITICALcrates/but-rebase/src/graph_rebase/branch_stacks.rs298 let Some(target_ref) = self.workspace.graph.project_meta.target_ref.as_ref() else {CODE
CRITICAL…src/command/legacy/status/tui/copy_selection_picker.rs79 let path = hunk.hunks.head.hunk.path.to_str_lossy().into_owned();CODE
CRITICALcrates/but/src/command/legacy/status/tui/details.rs1327 hunk.hunks.head.hunk.path.clone(),CODE
CRITICALcrates/but/src/command/legacy/status/tui/app/mod.rs1864 hunk.hunks.head.hunk.path.as_ref(),CODE
CRITICALcrates/but/src/command/legacy/status/tui/app/mod.rs1951 .map(|hunk| hunk.hunks.head.hunk.path.as_bstr()),CODE
Verbosity Indicators18 hits · 29 pts
SeverityFileLineSnippetContext
LOWcrates/but-workspace/src/commit/move_changes.rs63 // Step 1: Get the source commit and its treeCOMMENT
LOW…workspace/src/branch/integrate_branch_upstream/plan.rs117 // Step 1: Find all the local commits associated with a change ID.COMMENT
LOW…workspace/src/branch/integrate_branch_upstream/plan.rs139 // Step 2: Figure out which upstream-commits to squash into which local commits.COMMENT
LOW…workspace/src/branch/integrate_branch_upstream/plan.rs165 // Step 3: Return the steps in the right order.COMMENT
LOW…workspace/src/branch/integrate_branch_upstream/plan.rs358 // Step 1: We interpret the integration steps and transform them into graph steps disconnected from their parents.COMMENT
LOW…-workspace/src/branch/integrate_branch_upstream/mod.rs129 // Step 1: We prepare the steps before building.COMMENT
LOW…-workspace/src/branch/integrate_branch_upstream/mod.rs158 // Step 2: We determine which children and parents to disconnect from the segment above.COMMENT
LOW⚡…-workspace/src/branch/integrate_branch_upstream/mod.rs209 // Step 3: Disconnect the segment, isolating it so that we can freely manipulate it.COMMENT
LOW⚡…-workspace/src/branch/integrate_branch_upstream/mod.rs217 // Step 4: Based on the prepared steps, we rebuild the chain.COMMENT
LOW⚡…-workspace/src/branch/integrate_branch_upstream/mod.rs220 // Step 5: Once we have our new chain, we reconnect it to the original children and parents.COMMENT
LOW…-workspace/src/branch/integrate_branch_upstream/mod.rs274 // Step 1: We create the editor, which maps every segment in the graph -COMMENT
LOW…-workspace/src/branch/integrate_branch_upstream/mod.rs285 // Step 2: We traverse the editor graph and determine the divergence between the local and remote branch.COMMENT
LOW…-workspace/src/branch/integrate_branch_upstream/mod.rs296 // Step 3: We determine the integration state of all the relevant commits, to know which are editableCOMMENT
LOW…-workspace/src/branch/integrate_branch_upstream/mod.rs341 // Step 4: Build the initial set of integration steps.COMMENT
LOW…-workspace/src/branch/integrate_branch_upstream/mod.rs358 // Step 5: Build the return payload, including the integration steps recommendedCOMMENT
LOWcrates/but/src/command/legacy/pull/mod.rs352 // Step 1: Check upstream dataCOMMENT
LOWcrates/but/src/command/legacy/pull/mod.rs451 // Step 2: Dry-run integration and derive statuses from the preview, like the desktop app.COMMENT
LOWcrates/but/src/command/legacy/pull/mod.rs516 // Step 3: Actually perform the integrationCOMMENT
Structural Annotation Overuse18 hits · 29 pts
SeverityFileLineSnippetContext
LOWcrates/but-workspace/src/commit/move_changes.rs63 // Step 1: Get the source commit and its treeCOMMENT
LOW…workspace/src/branch/integrate_branch_upstream/plan.rs117 // Step 1: Find all the local commits associated with a change ID.COMMENT
LOW…workspace/src/branch/integrate_branch_upstream/plan.rs139 // Step 2: Figure out which upstream-commits to squash into which local commits.COMMENT
LOW…workspace/src/branch/integrate_branch_upstream/plan.rs165 // Step 3: Return the steps in the right order.COMMENT
LOW…workspace/src/branch/integrate_branch_upstream/plan.rs358 // Step 1: We interpret the integration steps and transform them into graph steps disconnected from their parents.COMMENT
LOW…-workspace/src/branch/integrate_branch_upstream/mod.rs129 // Step 1: We prepare the steps before building.COMMENT
LOW…-workspace/src/branch/integrate_branch_upstream/mod.rs158 // Step 2: We determine which children and parents to disconnect from the segment above.COMMENT
LOW⚡…-workspace/src/branch/integrate_branch_upstream/mod.rs209 // Step 3: Disconnect the segment, isolating it so that we can freely manipulate it.COMMENT
LOW⚡…-workspace/src/branch/integrate_branch_upstream/mod.rs217 // Step 4: Based on the prepared steps, we rebuild the chain.COMMENT
LOW⚡…-workspace/src/branch/integrate_branch_upstream/mod.rs220 // Step 5: Once we have our new chain, we reconnect it to the original children and parents.COMMENT
LOW…-workspace/src/branch/integrate_branch_upstream/mod.rs274 // Step 1: We create the editor, which maps every segment in the graph -COMMENT
LOW…-workspace/src/branch/integrate_branch_upstream/mod.rs285 // Step 2: We traverse the editor graph and determine the divergence between the local and remote branch.COMMENT
LOW…-workspace/src/branch/integrate_branch_upstream/mod.rs296 // Step 3: We determine the integration state of all the relevant commits, to know which are editableCOMMENT
LOW…-workspace/src/branch/integrate_branch_upstream/mod.rs341 // Step 4: Build the initial set of integration steps.COMMENT
LOW…-workspace/src/branch/integrate_branch_upstream/mod.rs358 // Step 5: Build the return payload, including the integration steps recommendedCOMMENT
LOWcrates/but/src/command/legacy/pull/mod.rs352 // Step 1: Check upstream dataCOMMENT
LOWcrates/but/src/command/legacy/pull/mod.rs451 // Step 2: Dry-run integration and derive statuses from the preview, like the desktop app.COMMENT
LOWcrates/but/src/command/legacy/pull/mod.rs516 // Step 3: Actually perform the integrationCOMMENT
Self-Referential Comments9 hits · 27 pts
SeverityFileLineSnippetContext
MEDIUM…scripts/project-with-remote-branches__add-submodule.sh7# Create a simple repository to use as a submoduleCOMMENT
MEDIUMe2e/playwright/scripts/create-postcommit-fail-marker.sh2# Create a marker file to trigger post-commit failureCOMMENT
MEDIUMe2e/playwright/scripts/create-allowed-file.sh2# Create a file with allowed contentCOMMENT
MEDIUMe2e/playwright/scripts/project-with-commit-hooks.sh21 # Create a commit-msg hook that modifies the messageCOMMENT
MEDIUMe2e/playwright/scripts/project-with-commit-hooks.sh43 # Create a pre-commit hook that checks for forbidden contentCOMMENT
MEDIUMe2e/playwright/scripts/project-with-commit-hooks.sh66 # Create a post-commit hook that can be triggered to failCOMMENT
MEDIUMe2e/playwright/scripts/create-forbidden-file.sh2# Create a file with forbidden contentCOMMENT
MEDIUM…-with-remote-branches__commit-file-into-remote-base.sh10# Create a new branch in the remote project, add a file, and commit it.COMMENT
MEDIUM…t/scripts/project-in-single-branch-apply-transition.sh45# Create a managed workspace whose metadata will become stale after the direct checkout below.COMMENT
Fake / Example Data22 hits · 24 pts
SeverityFileLineSnippetContext
LOWcrates/but/tests/but/command/commit.rs3837 env.but("commit --empty -m 'placeholder'")CODE
LOWcrates/but/tests/but/command/commit.rs3902 env.but("commit --empty -b B -m 'placeholder'")CODE
LOWcrates/but/src/tui/text.rs137 assert_eq!(truncate_text("lorem ipsum", 5), "lore…");CODE
LOWcrates/but/src/args/config.rs27 /// but config user set name "John Doe"COMMENT
LOWcrates/but/src/args/config.rs342 /// but config user set name "John Doe"COMMENT
LOWcrates/but/src/args/mod.rs808 /// but config user set name "John Doe"COMMENT
LOWcrates/but-bitbucket/src/client/checks_tests.rs65 BitbucketClient::new("user@example.com", &Sensitive("test-token".to_string())).unwrap();CODE
LOW…ages/ui-svelte/src/stories/utils/Sticky.stories.svelte49 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt utCODE
LOW…ages/ui-svelte/src/stories/utils/Sticky.stories.svelte49 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt utCODE
LOW…ages/ui-svelte/src/stories/utils/Sticky.stories.svelte75 Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisciCODE
LOW…ages/ui-svelte/src/stories/utils/Sticky.stories.svelte75 Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisciCODE
LOW…ages/ui-svelte/src/stories/utils/Sticky.stories.svelte118 <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>CODE
LOW…ages/ui-svelte/src/stories/utils/Sticky.stories.svelte118 <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>CODE
LOW…i-svelte/src/stories/components/Textbox.stories.svelte60 let emailValue = $state("user@example.com");CODE
LOW…i-svelte/src/stories/components/Textbox.stories.svelte395 placeholder="user@example.com"CODE
LOW…i-svelte/src/stories/components/Textbox.stories.svelte479 placeholder="user@example.com"CODE
LOW…i-svelte/src/stories/components/Textbox.stories.svelte527 placeholder="user@example.com"CODE
LOW…i-svelte/src/stories/components/Textbox.stories.svelte544 placeholder="user@example.com"CODE
LOWe2e/playwright/tests/prAssociation.spec.ts129 data: { host: server.apiBaseUrl, accessToken: "fake-token" },CODE
LOW⚡e2e/playwright/tests/reviewStackingDescription.spec.ts1321 data: { host: server.apiBaseUrl, accessToken: "fake-token" },CODE
LOWe2e/playwright/src/forge.ts198 { data: { host: server.apiBaseUrl, accessToken: "fake-token" } },CODE
LOWapps/desktop/src/lib/ai/service.test.ts111 constructor(private response = "lorem ipsum") {}CODE
TODO Padding7 hits · 15 pts
SeverityFileLineSnippetContext
LOW⚡crates/but-forge/src/review.rs153 // TODO: implementCOMMENT
LOW⚡crates/but-forge/src/review.rs158 // TODO: implementCOMMENT
LOW⚡crates/but-forge/src/review.rs163 // TODO: implementCOMMENT
LOW⚡crates/but-forge/src/review.rs168 // TODO: implementCOMMENT
LOW⚡crates/but-forge/src/review.rs173 // TODO: implementCOMMENT
LOW⚡crates/but-forge/src/review.rs178 // TODO: implementCOMMENT
LOWcrates/but-api/src/json.rs505 // TODO: implement this. How to get description and what not?COMMENT
Cross-Language Confusion (JS/TS)3 hits · 15 pts
SeverityFileLineSnippetContext
HIGH…top/src/lib/dragging/dropHandlers/branchDropHandler.ts24 print(): string {CODE
HIGH…top/src/lib/dragging/dropHandlers/branchDropHandler.ts66 print(): string {CODE
HIGH…top/src/lib/dragging/dropHandlers/branchDropHandler.ts101 print(): string {CODE
Slop Phrases8 hits · 14 pts
SeverityFileLineSnippetContext
MEDIUMcrates/but-graph/tests/graph/init/with_workspace.rs3257 // It's worth noting that we avoid double-listing remote commits that are alsoCOMMENT
LOWcrates/but-db/src/transaction.rs43 /// Don't forget to call [commit()](Transaction::commit()) to actually persist the result.COMMENT
LOWcrates/but-db/src/transaction.rs62 /// Don't forget to call [commit()](Transaction::commit()) to actually persist the result.COMMENT
LOWcrates/but-db/src/transaction.rs79 /// Don't forget to call [commit()](Transaction::commit()) to actually persist the result.COMMENT
LOWcrates/but-db/src/transaction.rs101 /// Don't forget to call [commit()](Transaction::commit()) to actually persist the result.COMMENT
LOWcrates/but-db/src/transaction.rs118 /// Don't forget to call [commit()](Transaction::commit()) to actually persist the result.COMMENT
LOWcrates/but-db/src/transaction.rs140 /// Don't forget to call [commit()](Transaction::commit()) to actually persist the result.COMMENT
LOWcrates/but-db/src/transaction.rs157 /// Don't forget to call [commit()](Transaction::commit()) to actually persist the result.COMMENT
AI Slop Vocabulary4 hits · 10 pts
SeverityFileLineSnippetContext
MEDIUMcrates/but/src/id/mod.rs117 /// utilize. The purpose is to not cause a shortening of an ID to invalidate a longer form ofCOMMENT
MEDIUMcrates/but-installer/src/shell.rs123 // Check for PATH setup with more robust detectionCOMMENT
MEDIUMcrates/but-hunk-dependency/src/lib.rs81//! Essentially, perform the same algorithm as with simple `Branches`, but operate on a merge commit instead, simulatingCOMMENT
LOWscripts/add-but-symlink-to-deb.sh10# manager can't track the symlink, so it's better for everyone to just add itCOMMENT
Redundant / Tautological Comments1 hit · 2 pts
SeverityFileLineSnippetContext
LOWignore-vercel.sh23# Check if we're in a git repositoryCOMMENT
Overly Generic Function Names1 hit · 1 pts
SeverityFileLineSnippetContext
LOWe2e/playwright/src/fakeGithub.ts282async function handleRequest(CODE