AI Slop Code Risk Monitor

RSS-Bridge/rss-bridge

SlopCodeMonitor badge for RSS-Bridge/rss-bridge Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

The RSS feed for websites missing it

1.2 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for RSS-Bridge/rss-bridge, a PHP project with 9,325 GitHub stars. SynthScan examined 101,174 lines of code across 748 source files, recording 117 pattern matches distributed across 6 syntactic categories. The legacy adjusted pattern signal is 1.2 (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.2
Adjusted Signal
1.2
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
9.3K
Stars
PHP
Language
101.2K
Lines of Code
748
Files
117
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 4.8/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 1.0/100 · LOW

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

Agent Over-Engineering Ratio 2.1/100 · LOW

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

PR Review Velocity Impact 5.8/100 · LOW

Which changes need focused human review? 117 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 1MEDIUM 0LOW 116

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 117 distinct pattern matches across 6 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.

Hyper-Verbose Identifiers41 hits · 44 pts
SeverityFileLineSnippetContext
LOWtests/UberEngineeringBridgeTest.php9 public function testExtractArticleFeedFromHtml(): voidCODE
LOWtests/UberEngineeringBridgeTest.php39 public function testExtractArticleFeedFromHtmlThrowsWhenFeedScriptIsMissing(): voidCODE
LOWtests/UtilsTest.php59 public function testSanitizePathNameInErrorMessage()CODE
LOWtests/YoutubeTest.php39 public function testHandleYoutubeNotIframe()CODE
LOWtests/ConfigurationTest.php12 public function testValueFromDefaultConfig()CODE
LOWtests/ConfigurationTest.php22 public function testValueFromCustomConfig()CODE
LOWdocs/06_Helper_functions/index.md206function stripRecursiveHTMLSection(string $string, string $tag_name, string $tag_start) : stringCODE
LOWbridges/GitlabIssueBridge.php193 private function parseMergeRequestDescription()CODE
LOWbridges/WikipediaBridge.php142 private function addTodaysFeaturedArticleGeneric(CODE
LOWbridges/BookMyShowBridge.php1189 private function generateEventDetailsTable($event, $headers = self::TABLE_HEADERS)CODE
LOWbridges/BookMyShowBridge.php1236 private function generateInnerMovieDetails($data)CODE
LOWbridges/ShanaprojectBridge.php144 private function extractAnimeEpisodeInformation($anime)CODE
LOWbridges/ShanaprojectBridge.php156 private function extractAnimeBackgroundImage($anime)CODE
LOWbridges/UberEngineeringBridge.php50 public static function extractArticleFeedFromHtml(string $html, string $path): arrayCODE
LOWbridges/RadioFranceBridge.php177 private function convertJsonChildrenToHTML($children)CODE
LOWbridges/XPathBridge.php206 protected function getSettingUseRawItemContent(): boolCODE
LOW⚡bridges/XPathBridge.php233 protected function getExpressionItemTimestamp(): stringCODE
LOW⚡bridges/XPathBridge.php243 protected function getExpressionItemEnclosures(): stringCODE
LOW⚡bridges/XPathBridge.php252 protected function getExpressionItemCategories(): stringCODE
LOWbridges/BlueskyBridge.php672 private function getStarterPackDescription(array $record): stringCODE
LOWbridges/NextInkBridge.php89 protected function collectArticlesFromHtmlListing($url, $limit)CODE
LOWbridges/JustETFBridge.php239 private function extractFullArticleContent($article)CODE
LOWbridges/YoutubeBridge.php314 private function ytBridgeGetVideoDescriptionEnhancements(CODE
LOWbridges/YoutubeBridge.php498 private function fetchItemsFromFromJsonData($jsonData)CODE
LOWbridges/KununuBridge.php133 private function extractArticleDescription($json)CODE
LOWbridges/GiteaBridge.php259 protected function collectSingleIssueOrPrData($html)CODE
LOWbridges/NintendoBridge.php396 protected function getExpressionItemTimestamp()CODE
LOWbridges/NintendoBridge.php411 protected function getExpressionItemCategories()CODE
LOWbridges/Vk2Bridge.php186 protected function getImageURLWithLargestWidth($items)CODE
LOWbridges/CssSelectorComplexBridge.php356 protected function fetchArticleElementFromPage($entry_url, $content_selector)CODE
LOWbridges/FacebookBridge.php313 private function extractGroupPostEnclosures($post)CODE
LOWactions/DisplayAction.php146 private function createFeedItemFromException($e, BridgeAbstract $bridge): arrayCODE
LOWlib/TwitterClient.php81 private function extractTweetAndUsersFromGraphQL($timeline)CODE
LOWlib/TwitterClient.php282 private function fetchUserInfoByScreenName(string $screenName)CODE
LOWlib/html.php337function parseSrcsetLargestImageUrl(string $srcset)CODE
LOWlib/html.php482function stripRecursiveHTMLSection($string, $tag_name, $tag_start)CODE
LOW⚡lib/XPathAbstract.php270 protected function getExpressionItemTimestamp()CODE
LOW⚡lib/XPathAbstract.php280 protected function getExpressionItemEnclosures()CODE
LOW⚡lib/XPathAbstract.php289 protected function getExpressionItemCategories()CODE
LOWlib/XPathAbstract.php307 protected function getSettingUseRawItemContent(): boolCODE
LOWlib/parsedown/Parsedown.php1618 protected function filterUnsafeUrlInAttribute(array $Element, $attribute)CODE
Over-Commented Block53 hits · 41 pts
SeverityFileLineSnippetContext
LOWbridges/AppleAppStoreBridge.php21 // 'iPad' => 'ipad',COMMENT
LOWbridges/PatreonBridge.php61 //'like_count',COMMENT
LOWbridges/CollegeDeFranceBridge.php41 foreach ($html->find('a[data-target]') as $element) {COMMENT
LOWbridges/DeveloppezDotComBridge.php241 */COMMENT
LOWbridges/DeveloppezDotComBridge.php261 // with only one encoding. We have to check every paragraph andCOMMENT
LOWbridges/NextgovBridge.php41// $media = $newsItem->children($namespaces['media']);COMMENT
LOWbridges/OneFortuneADayBridge.php81 <<<QUOTESCOMMENT
LOWbridges/OneFortuneADayBridge.php101//It is now, and in this world, that we must live.COMMENT
LOWbridges/OneFortuneADayBridge.php121//Its amazing how much good you can do if you dont care who gets the credit.COMMENT
LOWbridges/OneFortuneADayBridge.php141//Stay true to those who would do the same for you.COMMENT
LOWbridges/OneFortuneADayBridge.php161//You will make many changes before settling down happily.COMMENT
LOWbridges/OneFortuneADayBridge.php181//Good health will be yours for a long time.COMMENT
LOWbridges/OneFortuneADayBridge.php201//Good news from afar may bring you a welcome visitor.COMMENT
LOWbridges/OneFortuneADayBridge.php221//You will have unexpected great good luck.COMMENT
LOWbridges/OneFortuneADayBridge.php241//You will soon witness a miracle.COMMENT
LOWbridges/OneFortuneADayBridge.php261//When you expect your opponent to yield, you also should avoid hurting him.COMMENT
LOWbridges/OneFortuneADayBridge.php281//Punctuality is the politeness of kings and the duty of gentle peopleCOMMENT
LOWbridges/OneFortuneADayBridge.php301//An admirer is concealing his/her affection for you.COMMENT
LOWbridges/OneFortuneADayBridge.php321//Put your unhappiness aside. Life is beautiful, be happy.COMMENT
LOWbridges/OneFortuneADayBridge.php341//To effect the quality of the day is no small achievement.COMMENT
LOWbridges/OneFortuneADayBridge.php361//A dream you have will come trueCOMMENT
LOWbridges/OneFortuneADayBridge.php381better.COMMENT
LOWbridges/OneFortuneADayBridge.php401//Things are never quite the way they seem.COMMENT
LOWbridges/OneFortuneADayBridge.php421//A single kind work will keep one warm for years.COMMENT
LOWbridges/OneFortuneADayBridge.php441//Isn't there something else you should be working on right now?COMMENT
LOWbridges/OneFortuneADayBridge.php461from still loving them again even after all that pain.COMMENT
LOWbridges/OneFortuneADayBridge.php481to you.COMMENT
LOWbridges/OneFortuneADayBridge.php501//Hope brings about a better futureCOMMENT
LOWbridges/OneFortuneADayBridge.php521//Rarely do great beauty and great virtue dwell together as they do in you.COMMENT
LOWbridges/OneFortuneADayBridge.php541//It is much easier to look for the bad, than it is to find the goodCOMMENT
LOWbridges/OneFortuneADayBridge.php561//Someone stole your fortune and replaced it with this one. Your luck sucks.COMMENT
LOWbridges/OneFortuneADayBridge.php581//Rest has a peaceful effect on your physical and emotional health.COMMENT
LOWbridges/OneFortuneADayBridge.php601//Be prepared for extra energy.COMMENT
LOWbridges/OneFortuneADayBridge.php621//Help, I'm prisoner in a Chinese bakery!!!COMMENT
LOWbridges/OneFortuneADayBridge.php641//When you can't naturally feel upbeat it can sometimes help you to act as ifCOMMENT
LOWbridges/OneFortuneADayBridge.php661//The best things in life aren't things.COMMENT
LOWbridges/OneFortuneADayBridge.php681//All troubles you have can pass away very quickly.COMMENT
LOWbridges/OneFortuneADayBridge.php701//You know where you are going and how to get there.COMMENT
LOWbridges/OneFortuneADayBridge.php721//The joyful energy of the day will have a positive affect on you.COMMENT
LOWbridges/OneFortuneADayBridge.php741//A small lucky package is on its way to you soon.COMMENT
LOWbridges/OneFortuneADayBridge.php761//A new friend helps you break out of an old routine.COMMENT
LOWbridges/OneFortuneADayBridge.php781//Your succeess will astonish everyone.COMMENT
LOWbridges/OneFortuneADayBridge.php801//You will be successful in your workCOMMENT
LOWbridges/OneFortuneADayBridge.php821//The gambler is like the fisherman both have beginners luck.COMMENT
LOWbridges/OneFortuneADayBridge.php841//The eyes believe themselves; the ears believe other people.COMMENT
LOWbridges/OneFortuneADayBridge.php861//Don't just spend time, invest it.COMMENT
LOWbridges/OneFortuneADayBridge.php881//Excuses are easy to manufacture, and hard to sell.COMMENT
LOWbridges/OneFortuneADayBridge.php901//today you should be a passenger. Stay close to a driver for a day.COMMENT
LOWbridges/OneFortuneADayBridge.php921//Be a generous friend and a fair enemyCOMMENT
LOWbridges/OneFortuneADayBridge.php941//Being happy is not always being perfect.COMMENT
LOWlib/TwitterClient.php201 'user_info' => [],COMMENT
LOWlib/simplehtmldom/simple_html_dom.php1161COMMENT
LOWlib/parsedown/Parsedown.php1<?phpCOMMENT
Fake / Example Data17 hits · 20 pts
SeverityFileLineSnippetContext
LOWtests/BridgeCardTest.php62 $this->assertSame('<input type="text" id="id" name="name" value="val" placeholder="placeholder" pattern="\d\d" cCODE
LOWtests/BridgeCardTest.php67 'placeholder' => 'placeholder',CODE
LOWdocs/06_Helper_functions/index.md173// 'John Doe'COMMENT
LOW⚡docs/06_Helper_functions/index.md282truncate('Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed a neque nunc. Nam nibh sem.', 20 , '...');CODE
LOW⚡docs/06_Helper_functions/index.md282truncate('Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed a neque nunc. Nam nibh sem.', 20 , '...');CODE
LOW⚡docs/06_Helper_functions/index.md292<body><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit...</p>CODE
LOW⚡docs/06_Helper_functions/index.md292<body><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit...</p>CODE
LOWstatic/rss-bridge.js44 inputElement.value = inputElement.getAttribute("placeholder");CODE
LOW.github/prtester.py88 if parameter.get('placeholder') == '':STRING
LOW.github/prtester.py94 context_parameters[parameter_name] = parameter.get('placeholder')STRING
LOWactions/FrontpageAction.php255 'placeholder' => $parameter['exampleValue'],CODE
LOWactions/FrontpageAction.php273 'placeholder' => $parameter['exampleValue'],CODE
LOWlib/seotags.php193 // At this point, $field = ['author', 'name'] and $json_root = {"author": {"name": "COMMENT
LOWlib/seotags.php200 $json_root = $json_root[0]; // Unwrap list of single item e.g. {"author"CODE
LOWlib/seotags.php212 // At this point, $field = "name" and $json_root = {"name": "John Doe"}COMMENT
LOWlib/seotags.php225 break; // Stop on first match, e.g. {"author":{"name":"John Doe"}} has priorCODE
LOWlib/html.php108 'placeholder',CODE
Synthetic Comment Markers1 hit · 8 pts
SeverityFileLineSnippetContext
HIGHbridges/PixivBridge.php213 //exclude AI generated works if unchecked.COMMENT
Structural Annotation Overuse4 hits · 6 pts
SeverityFileLineSnippetContext
LOWdocs/05_Bridge_API/02_BridgeAbstract.md38## Step 1 - Create a new fileCOMMENT
LOWdocs/05_Bridge_API/02_BridgeAbstract.md42## Step 2 - Add a class, extending `BridgeAbstract`COMMENT
LOWdocs/05_Bridge_API/02_BridgeAbstract.md61## Step 3 - Add general constants to the classCOMMENT
LOWdocs/05_Bridge_API/02_BridgeAbstract.md93## Step 4 - Implement a function to collect feed dataCOMMENT
Slop Phrases1 hit · 2 pts
SeverityFileLineSnippetContext
LOWlib/WebDriverAbstract.php134 * Don't forget to call cleanUp() at the end.COMMENT