AI Slop Code Risk Monitor

stevencohn/OneMore

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

A OneNote add-in with simple, yet powerful and useful features

1.8 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for stevencohn/OneMore, a C# project with 3,439 GitHub stars. SynthScan examined 279,174 lines of code across 1196 source files, recording 418 pattern matches distributed across 7 syntactic categories. The legacy adjusted pattern signal is 1.8 (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.

1.8
Adjusted Signal
1.8
Raw Pattern Score
100%
Time Factor
2026-11-01
Last Push
3.4K
Stars
C#
Language
279.2K
Lines of Code
1.2K
Files
418
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 6.3/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 1.9/100 · LOW

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

Agent Over-Engineering Ratio 0.4/100 · LOW

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

PR Review Velocity Impact 8.6/100 · LOW

Which changes need focused human review? 418 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 2HIGH 6MEDIUM 17LOW 393

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 418 distinct pattern matches across 7 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 Block310 hits · 308 pts
SeverityFileLineSnippetContext
LOWOneMoreTests/MockApplication.cs41COMMENT
LOWOneMoreCli/ArgParser.cs21 public static bool IsHelpFlag(string arg) =>COMMENT
LOWOneMoreCli/InteractiveRunner.cs61 }COMMENT
LOWOneMoreCli/CommandDiscovery.cs21 /// Finds all non-abstract types in <c>River.OneMoreAddIn.dll</c> that implementCOMMENT
LOWOneMoreCli/Program.cs21 /// <item>COMMENT
LOWOneMoreCli/Program.cs141COMMENT
LOWOneMoreCli/Program.cs241 {COMMENT
LOWOneMoreProtocolHandler/ComServer.cs1//************************************************************************************************COMMENT
LOWdocs/telemetry/telemetry.css161#os-culture td { background-color: #ffe699; color: black; }COMMENT
LOWOneMoreSetupActions/Properties/Resource.Designer.cs1//------------------------------------------------------------------------------COMMENT
LOWOneMoreSetupActions/Properties/Resource.Designer.cs61 }COMMENT
LOWOneMoreSetupActions/Actions/BackupDatabaseAction.cs1//************************************************************************************************COMMENT
LOWOneMoreSetupActions/Actions/ActiveSetupAction.cs1//************************************************************************************************COMMENT
LOWOneMoreSetupActions/Actions/RegistryAction.cs81 /// Sets the DCOM LaunchPermission on the OneMore AppID so that non-admin users can launchCOMMENT
LOWOneMore/OneNote.cs261COMMENT
LOWOneMore/OneNote.cs281 public string CurrentNotebookId => WithCurrentWindow(w => w.CurrentNotebookId, null);COMMENT
LOWOneMore/OneNote.cs301 /// the owner parameter to MoreMessageBox Show methods.COMMENT
LOWOneMore/OneNote.cs1061COMMENT
LOWOneMore/OneNote.cs1441 Marshal.ReleaseComObject(allWindows);COMMENT
LOWOneMore/OneNote.cs1481COMMENT
LOWOneMore/OneNote.cs2041COMMENT
LOWOneMore/AddIn.cs241 //COMMENT
LOWOneMore/UI/MoreListView.cs21 /// </summary>COMMENT
LOWOneMore/UI/MoreListView.cs61 /// Optional ThemeManager color key overriding the normal/muted foreground color,COMMENT
LOWOneMore/UI/MoreListView.cs201 /// <summary>COMMENT
LOWOneMore/UI/MoreListView.cs221 /// Defaults to "HighlightText" (matching the default "Highlight" background).COMMENT
LOWOneMore/UI/MoreListView.cs261 /// Gets or sets a predicate determining whether the given item is an "anchor" rowCOMMENT
LOWOneMore/UI/WebViewDialog.cs21 /// </summary>COMMENT
LOWOneMore/UI/Scaling.cs181 var metric = Native.GetSystemMetrics(index);COMMENT
LOWOneMore/UI/Scaling.cs281 }COMMENT
LOWOneMore/UI/MoreCheckListPanel.cs1//************************************************************************************************COMMENT
LOWOneMore/UI/IDpiAware.cs1//************************************************************************************************COMMENT
LOWOneMore/UI/ProgressDialog.cs21 /// progress bar is shown with a message area; the consumer is responsible for setting theCOMMENT
LOWOneMore/UI/ProgressDialog.cs61 /// <summary>COMMENT
LOWOneMore/UI/ILoadControl.cs1//************************************************************************************************COMMENT
LOWOneMore/UI/Translator.cs21 /// <returns></returns>COMMENT
LOWOneMore/UI/MoreSlider.cs1//************************************************************************************************COMMENT
LOWOneMore/UI/MoreForm.cs121 protected bool RememberSize { get; set; } = false;COMMENT
LOWOneMore/UI/MoreForm.cs201 /// <summary>COMMENT
LOWOneMore/UI/MoreForm.cs301 // this dialog does not automatically hand foreground focus back toCOMMENT
LOWOneMore/UI/MoreForm.cs321 // undo the AddAutomationFocusChangedEventHandler from OnShown; otherwise thisCOMMENT
LOWOneMore/UI/MoreForm.cs661 // $"{GetType().Name}.{where} DeviceDpi={DeviceDpi} windowDpi={windowDpi} " +COMMENT
LOWOneMore/UI/MoreForm.cs701 // passed to ShowDialog) when the handle is created, well before OnShown fires,COMMENT
LOWOneMore/UI/MoreListViewEx.cs261COMMENT
LOWOneMore/UI/MoreListViewEx.cs1081COMMENT
LOWOneMore/UI/MoreListViewEx.cs1141 /// </summary>COMMENT
LOWOneMore/UI/MoreAutoCompleteList.cs21COMMENT
LOWOneMore/UI/MoreAutoCompleteList.cs301 painter?.Dispose();COMMENT
LOWOneMore/UI/MoreAutoCompleteList.cs341 /// <summary>COMMENT
LOWOneMore/UI/MoreAutoCompleteList.cs361COMMENT
LOWOneMore/UI/MoreAutoCompleteList.cs401 }COMMENT
LOWOneMore/Models/Page.cs401 // Size must follow Position per PageObject schemaCOMMENT
LOWOneMore/Models/Page.cs661 }COMMENT
LOWOneMore/Models/SelectionRange.cs61 /// <summary>COMMENT
LOWOneMore/Models/SelectionRange.cs121 // paragraph, collapsing a blank-line separator between two other paragraphs.COMMENT
LOWOneMore/Models/SelectionRange.cs261 runs[i].Remove();COMMENT
LOWOneMore/Models/SelectionRange.cs321COMMENT
LOWOneMore/Models/ListMarker.cs41 /// only its structural attributes, then optionally applies a font and size.COMMENT
LOWOneMore/Models/PageReader.cs401 /// </summary>COMMENT
LOWOneMore/Models/PageReader.cs421 /// a newline "\" to emulate a line break in between consecutive paragraphs.COMMENT
250 more matches not shown…
Fake / Example Data76 hits · 82 pts
SeverityFileLineSnippetContext
LOW⚡OneMoreTests/Commands/Edit/JoinParagraphCommandTests.cs30 * Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididuntCOMMENT
LOW⚡OneMoreTests/Commands/Edit/JoinParagraphCommandTests.cs30 * Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididuntCOMMENT
LOW⚡OneMoreTests/Commands/Edit/JoinParagraphCommandTests.cs40 * Lorem ipsumCOMMENT
LOWOneMoreTests/Commands/Edit/JoinParagraphCommandTests.cs250 new XElement(Ns + "T", new XCData("Lorem ipsum<br>\n")),CODE
LOWOneMoreTests/Commands/Edit/JoinParagraphCommandTests.cs280 Assert.AreEqual("Lorem ipsum dolor sit amet", joined,CODE
LOWOneMoreTests/Commands/Edit/JoinParagraphCommandTests.cs280 Assert.AreEqual("Lorem ipsum dolor sit amet", joined,CODE
LOW⚡OneMoreTests/Commands/Edit/JoinParagraphCommandTests.cs385 // in "Lorem ipsum". The space touching the caret must survive the join,COMMENT
LOW⚡OneMoreTests/Commands/Edit/JoinParagraphCommandTests.cs388 new XElement(Ns + "T", new XCData("Lorem ipsum ")),CODE
LOW⚡OneMoreTests/Commands/Edit/JoinParagraphCommandTests.cs392 new XElement(Ns + "T", new XCData("dolor sit amet")));CODE
LOWOneMoreTests/Commands/Edit/JoinParagraphCommandTests.cs426 Assert.AreEqual("Lorem ipsum dolor sit amet", joined,CODE
LOWOneMoreTests/Commands/Edit/JoinParagraphCommandTests.cs426 Assert.AreEqual("Lorem ipsum dolor sit amet", joined,CODE
LOWOneMoreTests/Commands/Edit/ColorizeCommandTests.cs66 * ... <one:T><![CDATA[Lorem ipsum dolor sit amet]]></one:T> ...COMMENT
LOWOneMoreTests/Commands/Edit/ColorizeCommandTests.cs66 * ... <one:T><![CDATA[Lorem ipsum dolor sit amet]]></one:T> ...COMMENT
LOWOneMoreTests/Commands/Edit/ColorizeCommandTests.cs339 " <one:T><![CDATA[Lorem ipsum dolor sit amet]]></one:T>",CODE
LOWOneMoreTests/Commands/Edit/ColorizeCommandTests.cs339 " <one:T><![CDATA[Lorem ipsum dolor sit amet]]></one:T>",CODE
LOW…eMoreTests/Commands/Edit/CopyAsMarkdownCommandTests.cs25 * Lorem ipsum dolor sit amet, ...COMMENT
LOW…eMoreTests/Commands/Edit/CopyAsMarkdownCommandTests.cs25 * Lorem ipsum dolor sit amet, ...COMMENT
LOW…eMoreTests/Commands/Edit/CopyAsMarkdownCommandTests.cs88 .WithParagraph("Lorem ipsum dolor sit amet, consectetur adipiscing elit.")CODE
LOW…eMoreTests/Commands/Edit/CopyAsMarkdownCommandTests.cs88 .WithParagraph("Lorem ipsum dolor sit amet, consectetur adipiscing elit.")CODE
LOW…eMoreTests/Commands/Edit/CopyAsMarkdownCommandTests.cs143 StringAssert.Contains(markdown, "Lorem ipsum dolor sit amet");CODE
LOW…eMoreTests/Commands/Edit/CopyAsMarkdownCommandTests.cs143 StringAssert.Contains(markdown, "Lorem ipsum dolor sit amet");CODE
LOW…eMoreTests/Commands/Edit/CopyAsMarkdownCommandTests.cs171 var loremPos = markdown.IndexOf("Lorem ipsum");CODE
LOWOneMoreTests/Commands/Clean/TrimCommandTests.cs57 .WithParagraph("Lorem ipsum dolor sit amet ")CODE
LOWOneMoreTests/Commands/Clean/TrimCommandTests.cs57 .WithParagraph("Lorem ipsum dolor sit amet ")CODE
LOW⚡OneMoreTests/Commands/Clean/TrimCommandTests.cs70 var trailingText = GetText(updated, "Lorem ipsum");CODE
LOW⚡OneMoreTests/Commands/Clean/TrimCommandTests.cs72 Assert.AreEqual("Lorem ipsum dolor sit amet", trailingText,CODE
LOW⚡OneMoreTests/Commands/Clean/TrimCommandTests.cs72 Assert.AreEqual("Lorem ipsum dolor sit amet", trailingText,CODE
LOWOneMoreTests/Commands/Clean/TrimCommandTests.cs88 .WithParagraph(" Lorem ipsum dolor sit amet")CODE
LOWOneMoreTests/Commands/Clean/TrimCommandTests.cs88 .WithParagraph(" Lorem ipsum dolor sit amet")CODE
LOW⚡OneMoreTests/Commands/Clean/TrimCommandTests.cs101 var leadingText = GetText(updated, "Lorem ipsum");CODE
LOW⚡OneMoreTests/Commands/Clean/TrimCommandTests.cs103 Assert.AreEqual("Lorem ipsum dolor sit amet", leadingText,CODE
LOW⚡OneMoreTests/Commands/Clean/TrimCommandTests.cs103 Assert.AreEqual("Lorem ipsum dolor sit amet", leadingText,CODE
LOWOneMoreTests/Commands/Clean/TrimCommandTests.cs120 new XElement(Ns + "T", new XCData("Lorem ipsum d ")),CODE
LOWOneMoreTests/Commands/Clean/TrimCommandTests.cs142 Assert.AreEqual("Lorem ipsum d ", runs[0],CODE
LOWOneMoreTests/Commands/Clean/TrimCommandTests.cs154 .WithParagraph("Lorem ipsum dolor sit amet")CODE
LOWOneMoreTests/Commands/Clean/TrimCommandTests.cs154 .WithParagraph("Lorem ipsum dolor sit amet")CODE
LOW⚡…reTests/Commands/Clean/AdjustBlankLinesCommandTests.cs150 StringAssert.Contains(paragraphs[0].TextValue(), "Lorem ipsum");CODE
LOW⚡…reTests/Commands/Clean/AdjustBlankLinesCommandTests.cs160 .WithParagraph("Lorem ipsum dolor sit amet")CODE
LOW⚡…reTests/Commands/Clean/AdjustBlankLinesCommandTests.cs160 .WithParagraph("Lorem ipsum dolor sit amet")CODE
LOW⚡…reTests/Commands/Clean/AdjustBlankLinesCommandTests.cs214 StringAssert.Contains(paragraphs[0].TextValue(), "Lorem ipsum");CODE
LOW⚡…reTests/Commands/Clean/AdjustBlankLinesCommandTests.cs224 .WithParagraph("Lorem ipsum dolor sit amet")CODE
LOW⚡…reTests/Commands/Clean/AdjustBlankLinesCommandTests.cs224 .WithParagraph("Lorem ipsum dolor sit amet")CODE
LOW…reTests/Commands/Clean/AdjustBlankLinesCommandTests.cs94 .WithParagraph("Lorem ipsum dolor sit amet")CODE
LOW…reTests/Commands/Clean/AdjustBlankLinesCommandTests.cs94 .WithParagraph("Lorem ipsum dolor sit amet")CODE
LOW…reTests/Commands/Clean/AdjustBlankLinesCommandTests.cs114 StringAssert.Contains(paragraphs[0].TextValue(), "Lorem ipsum");CODE
LOW…reTests/Commands/Clean/AdjustBlankLinesCommandTests.cs127 .WithParagraph("Lorem ipsum dolor sit amet")CODE
LOW…reTests/Commands/Clean/AdjustBlankLinesCommandTests.cs127 .WithParagraph("Lorem ipsum dolor sit amet")CODE
LOW…reTests/Commands/Clean/AdjustBlankLinesCommandTests.cs194 .WithParagraph("Lorem ipsum dolor sit amet")CODE
LOW…reTests/Commands/Clean/AdjustBlankLinesCommandTests.cs194 .WithParagraph("Lorem ipsum dolor sit amet")CODE
LOW…reTests/Commands/Clean/AdjustBlankLinesCommandTests.cs264 .WithParagraph("Lorem ipsum dolor sit amet")CODE
LOW…reTests/Commands/Clean/AdjustBlankLinesCommandTests.cs264 .WithParagraph("Lorem ipsum dolor sit amet")CODE
LOW…reTests/Commands/Clean/AdjustBlankLinesCommandTests.cs286 .WithParagraph("Lorem ipsum")CODE
LOW…reTests/Commands/Clean/AdjustBlankLinesCommandTests.cs301 new[] { "Lorem ipsum", "", "Ut enim", "", "Duis aute" },CODE
LOW…reTests/Commands/Clean/AdjustBlankLinesCommandTests.cs311 .WithParagraph("Lorem ipsum")CODE
LOW…reTests/Commands/Clean/AdjustBlankLinesCommandTests.cs328 new[] { "Lorem ipsum", "", "Ut enim", "", "Duis aute" },CODE
LOW…reTests/Commands/Clean/AdjustBlankLinesCommandTests.cs366 .WithParagraph("Lorem ipsum")CODE
LOW…reTests/Commands/Clean/AdjustBlankLinesCommandTests.cs383 new[] { "Section", "", "Lorem ipsum", "Ut enim" },CODE
LOW…reTests/Commands/Clean/AdjustBlankLinesCommandTests.cs397 .WithParagraph("Lorem ipsum")CODE
LOW…reTests/Commands/Clean/AdjustBlankLinesCommandTests.cs412 new[] { "Section", "", "Lorem ipsum" },CODE
LOW…reTests/Commands/Clean/AdjustBlankLinesCommandTests.cs425 .WithParagraph("Lorem ipsum")CODE
16 more matches not shown…
Synthetic Comment Markers6 hits · 45 pts
SeverityFileLineSnippetContext
HIGHOneMoreSetupActions/Properties/Resource.Designer.cs3// This code was generated by a tool.COMMENT
HIGHOneMore/Properties/Resources.Designer.cs3// This code was generated by a tool.COMMENT
HIGHOneMoreCalendar/Properties/Settings.Designer.cs3// This code was generated by a tool.COMMENT
HIGHOneMoreCalendar/Properties/Resources.Designer.cs3// This code was generated by a tool.COMMENT
HIGHOneMoreTray/Properties/Settings.Designer.cs3// This code was generated by a tool.COMMENT
HIGHOneMoreTray/Properties/Resources.Designer.cs3// This code was generated by a tool.COMMENT
Hallucination Indicators2 hits · 25 pts
SeverityFileLineSnippetContext
CRITICALOneMore/Helpers/ReadOnlyStream.cs156 /// last System.Runtime.InteropServices.ComTypes.IStream.Commit(System.Int32) call.COMMENT
CRITICALOneMoreCalendar/Things/ThemeProvider.cs241 River.OneMoreAddIn.UI.ThemeManager.Instance.LoadColors();CODE
Decorative Section Separators17 hits · 19 pts
SeverityFileLineSnippetContext
MEDIUMOneMoreTests/data/Evernote/generate.py102# ---------------------------------------------------------------------------STRING
MEDIUMOneMoreTests/data/Evernote/generate.py104# ---------------------------------------------------------------------------STRING
MEDIUMOneMoreTests/data/Evernote/generate.py120# ---------------------------------------------------------------------------STRING
MEDIUMOneMoreTests/data/Evernote/generate.py126# ---------------------------------------------------------------------------STRING
MEDIUMOneMoreTests/data/Evernote/generate.py147# ---------------------------------------------------------------------------STRING
MEDIUMOneMoreTests/data/Evernote/generate.py149# ---------------------------------------------------------------------------STRING
MEDIUMOneMoreTests/data/Evernote/generate.py164# ---------------------------------------------------------------------------STRING
MEDIUMOneMoreTests/data/Evernote/generate.py166# ---------------------------------------------------------------------------STRING
MEDIUMOneMoreTests/data/Evernote/generate.py184# ---------------------------------------------------------------------------STRING
MEDIUMOneMoreTests/data/Evernote/generate.py186# ---------------------------------------------------------------------------STRING
MEDIUMOneMoreTests/data/Evernote/generate.py233# ---------------------------------------------------------------------------STRING
MEDIUMOneMoreTests/data/Evernote/generate.py235# ---------------------------------------------------------------------------STRING
MEDIUMOneMoreTests/data/Evernote/generate.py260# ---------------------------------------------------------------------------STRING
MEDIUMOneMoreTests/data/Evernote/generate.py263# ---------------------------------------------------------------------------STRING
MEDIUMOneMoreTests/data/Evernote/generate.py284# ---------------------------------------------------------------------------STRING
MEDIUMOneMoreTests/data/Evernote/generate.py288# ---------------------------------------------------------------------------STRING
MEDIUMOneMore/Commands/Settings/ContextMenuSheet.cs96 // right-side ordered list ─────────────────────────────────────────────────────────COMMENT
Structural Annotation Overuse4 hits · 8 pts
SeverityFileLineSnippetContext
LOW⚡.claude/skills/estimate-usage/SKILL.md51### Step 1: Gather Your DataCOMMENT
LOW⚡.claude/skills/estimate-usage/SKILL.md59### Step 2: Choose Your ScenarioCOMMENT
LOW⚡.claude/skills/estimate-usage/SKILL.md66### Step 3: Scale the DataCOMMENT
LOW.claude/skills/estimate-usage/SKILL.md89### Step 4: Analyze ResultsCOMMENT
Hyper-Verbose Identifiers3 hits · 3 pts
SeverityFileLineSnippetContext
LOWdocs/pagefind/pagefind-highlight.js600 value: function callNoMatchOnInvalidRanges(range, last) {CODE
LOWdocs/pagefind/pagefind-highlight.js690 value: function wrapRangeInMappedTextNode(dict, start, end, filterCb, eachCb) {CODE
LOWdocs/pagefind/pagefind-highlight.js749 value: function wrapMatchesAcrossElements(regex, ignoreGroups, filterCb, eachCb, endCb) {CODE