AI Slop Code Risk Monitor

spencermountain/compromise

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

modest natural-language processing

2.0 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for spencermountain/compromise, a JavaScript project with 12,169 GitHub stars. SynthScan examined 138,052 lines of code across 1328 source files, recording 126 pattern matches distributed across 8 syntactic categories. The legacy adjusted pattern signal is 2.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.

2.0
Adjusted Signal
2.0
Raw Pattern Score
100%
Time Factor
2026-10-30
Last Push
12.2K
Stars
JavaScript
Language
138.1K
Lines of Code
1.3K
Files
126
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 4.4/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 4.8/100 · LOW

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

Agent Over-Engineering Ratio 0.4/100 · LOW

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

PR Review Velocity Impact 8.3/100 · LOW

Which changes need focused human review? 126 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 9HIGH 3MEDIUM 8LOW 106

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 126 distinct pattern matches across 8 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.

Hallucination Indicators9 hits · 125 pts
SeverityFileLineSnippetContext
CRITICAL⚡builds/compromise.js1!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&defineCODE
CRITICALsrc/3-three/verbs/api/conjugate/inflect.js5 return root.methods.two.transform.verb.toInfinitive(root.text(format), root.model, getTense(root))CODE
CRITICALsrc/3-three/verbs/api/conjugate/inflect.js11 const forms = root.methods.two.transform.verb.conjugate(word, root.model)CODE
CRITICAL⚡src/2-two/preTagger/compute/root.js11 return world.methods.two.transform.noun.toSingular(str, world.model)CODE
CRITICAL⚡src/2-two/preTagger/compute/root.js20 return world.methods.two.transform.verb.toInfinitive(str, world.model, 'PastTense')CODE
CRITICAL⚡src/2-two/preTagger/compute/root.js25 return world.methods.two.transform.verb.toInfinitive(str, world.model, 'Gerund')CODE
CRITICAL⚡src/2-two/preTagger/compute/root.js33 return world.methods.two.transform.verb.toInfinitive(str, world.model, 'PresentTense')CODE
CRITICAL⚡src/2-two/preTagger/compute/root.js38 return world.methods.two.transform.adjective.fromComparative(str, world.model)CODE
CRITICAL⚡src/2-two/preTagger/compute/root.js43 return world.methods.two.transform.adjective.fromSuperlative(str, world.model)CODE
Over-Commented Block99 hits · 99 pts
SeverityFileLineSnippetContext
LOWplugins/dates/scratch.js1/* eslint-disable no-console, no-unused-vars */COMMENT
LOWplugins/dates/scratch.js21COMMENT
LOWplugins/dates/scratch.js41// txt = 'sept 2008 to oct 2008'COMMENT
LOWplugins/dates/scratch.js61const found = doc.dates(context).json()COMMENT
LOW…ins/dates/tests/context/weekday-interpretation.test.js21 t.equal(fmt(found.dates.start), a[1], 'monday-start')COMMENT
LOW…ins/dates/tests/context/weekday-interpretation.test.js41// t.equal(fmt(found.date.end), a[1], 'last-monday-end')COMMENT
LOWplugins/dates/tests/corpus/chronic.test.js121 ['2006-08-20 15:30.30', mk(2006, 8, 20, 15, 30, 30), 'iso-short'],COMMENT
LOWplugins/dates/tests/corpus/chronic.test.js201 // ['friday 11 in the evening', mk(2006, 8, 18, 23)],COMMENT
LOWplugins/dates/tests/corpus/chronic.test.js221 ['tomorrow', mk(2006, 8, 17, 12)],COMMENT
LOWplugins/dates/tests/corpus/chronic.test.js241 // ['next secs', mk(2006, 8, 16, 14, 0, 1)],COMMENT
LOWplugins/dates/tests/corpus/chronic.test.js261 // ['this day 1800', mk(2006, 8, 16, 18)],COMMENT
LOWplugins/dates/tests/corpus/chronic.test.js281 // ['2 weekends ago', mk(2006, 8, 5), 'ago'],COMMENT
LOWplugins/dates/tests/corpus/chronic.test.js301 ['25 minutes and 20 seconds from now', mk(2006, 8, 16, 14, 25, 20), 'from now'],COMMENT
LOWplugins/dates/tests/corpus/chronic.test.js321 // ['last spring', mk(2006, 3, 20),'year'],COMMENT
LOWplugins/dates/tests/corpus/chronic.test.js341 // ['next q1', mk(2007, 1, 1),'q1'],COMMENT
LOWplugins/dates/tests/durations/extraction.test.js81// ['12 years and 2 months', '12 years and 2 months'],COMMENT
LOWplugins/dates/tests/api/format.test.js1import test from 'tape'COMMENT
LOWplugins/dates/tests/api/format.test.js21// r2 = nlp('Thurs, feb 2nd, 2016')COMMENT
LOWplugins/dates/tests/parsing/weekdays.test.js61 // ['tues this week', [2011, march, 29]],COMMENT
LOWplugins/dates/tests/parsing/weekdays.test.js101 // ['this friday', [2016, february, 12]], //not todayCOMMENT
LOWplugins/dates/tests/parsing/calendar-periods.test.js421 // ['this summer', 'june 1st 2017 to August 31 2017'],COMMENT
LOWplugins/dates/src/compute/matches.js41 //March or JuneCOMMENT
LOWplugins/dates/src/compute/matches.js281 // any-wednesdayCOMMENT
LOWplugins/_experiments/markdown/src/parse/uuid.js41 //don't overflow indexCOMMENT
LOWplugins/_experiments/sentiment/test.js141console.log("It's not really very good.", nlp("It's not really very good.").sentiment(false, true));COMMENT
LOWplugins/_experiments/sentiment/test.js161// {COMMENT
LOWplugins/_experiments/sentiment/test.js181// -0.75,COMMENT
LOWplugins/_experiments/sentiment/test.js201// ],COMMENT
LOWplugins/_experiments/sentiment/src/plugin.js21COMMENT
LOWplugins/_experiments/sentiment/src/plugin.js41 //console.log('emojisOnlyArr: ', emojisOnlyArr);COMMENT
LOWplugins/_experiments/sentiment/src/plugin.js81 if (addSummary === true) { returnObj.summary = summaryArr; }COMMENT
LOWplugins/_experiments/sentiment/src/plugin.js101 const subjectivityValArr = [];COMMENT
LOWplugins/_experiments/sentiment/src/plugin.js121 // from pattern_en objectCOMMENT
LOWplugins/stats/scratch.js21// let doc = nlp(txt)COMMENT
LOWtests/02-two/misc/verb-noun-ambiguity.test.js1import test from 'tape'COMMENT
LOWtests/02-two/preTagger/gerund.test.js81 [`accelerating his returns`, `#Gerund his #Plural`],COMMENT
LOW…s/02-two/output/spec-prepositions-conjunctions.test.js1import test from 'tape'COMMENT
LOWtests/02-two/contraction-two/contraction.test.js161COMMENT
LOWtests/lib/tag-match-cases.js201COMMENT
LOWtests/03-three/numbers/prefix.test.js21COMMENT
LOWtests/03-three/match/three-match-examples.test.js1import test from 'tape'COMMENT
LOWtests/03-three/sentences/tense.test.js41 // 'Capital punishment, also known as the death penalty, was the state-sanctioned killing of a person as punishmenCOMMENT
LOWtests/03-three/sentences/tense.test.js61 // `A shoehorn or shoe horn was a tool with a short handle that flared into a longer spoon-like head`,COMMENT
LOWtests/03-three/sentences/tense.test.js81 // `A Bank was a financial institution that accepted deposits from the public and created a demand deposit while sCOMMENT
LOWtests/03-three/verbs/verbs-to-past.test.js221 ["he shops for groceries", "he shopped for groceries"]COMMENT
LOWtests/03-three/verbs/verbs-to-past.test.js241 // ["is enjoying the summer vacation", "enjoyed the summer vacation"],COMMENT
LOWtests/03-three/verbs/verbs-to-past.test.js261 // ["is feeding the birds", "fed the birds"],COMMENT
LOWtests/03-three/verbs/to-infinitive.test.js341 // ["stoned", "stone"],COMMENT
LOWtests/03-three/verbs/to-infinitive.test.js421 ['named', 'name'],COMMENT
LOWtests/03-three/verbs/to-infinitive.test.js441 // ["has been thinking about changing careers", `To have been thinking about changing careers`],COMMENT
LOWtests/03-three/verbs/to-infinitive.test.js461 // ["would have been upset if you didn't show up", `To have been upset if you didn't show up`],COMMENT
LOWtests/03-three/verbs/verbs-to-present.test.js201 // ["will be going to the concert tonight", `Goes to the concert`],COMMENT
LOWtests/03-three/verbs/verbs-to-present.test.js221 // ["can't wait to see the new movie", `Can't wait to see the new movie`],COMMENT
LOWtests/03-three/verbs/verbs-to-present.test.js241 // ["could have been living a lie", `Lives a lie`],COMMENT
LOWtests/03-three/coreference/tricky-coref.test.js1import test from 'tape'COMMENT
LOWtests/03-three/coreference/tricky-coref.test.js21 // [COMMENT
LOWtests/03-three/coreference/tricky-coref.test.js41 // "Then the magician went back and told to the Sultan his story.",COMMENT
LOWtests/03-three/coreference/tricky-coref.test.js61 // ],COMMENT
LOWtests/03-three/coreference/tricky-coref.test.js81 // [COMMENT
LOWtests/03-three/coreference/tricky-coref.test.js101 // [COMMENT
39 more matches not shown…
AI Slop Vocabulary4 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUMtests/_hmm/switches/noun-verb.hmm.js1482# harnessCOMMENT
MEDIUMtests/03-three/coreference/tricky-coref.test.js223 // "She emphasized the important activities undertaken by non-governmental organizations active in women's rights and COMMENT
MEDIUMtests/03-three/coreference/tricky-coref.test.js258 // "the leverage of Brussels over new member states increases rather than diminishes after they join.",COMMENT
MEDIUM⚡builds/compromise.js1!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&defineCODE
Decorative Section Separators4 hits · 10 pts
SeverityFileLineSnippetContext
MEDIUMplugins/dates/builds/compromise-dates.min.js1!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&defineCODE
MEDIUMplugins/dates/builds/compromise-dates.min.js1!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&defineCODE
MEDIUM⚡builds/compromise.js1!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&defineCODE
MEDIUM⚡builds/compromise.js1!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&defineCODE
Cross-Language Confusion (JS/TS)2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHsrc/API/debug/debug.js39 print(removed, '−', red)CODE
HIGHsrc/API/debug/debug.js40 print(added, '+', green)CODE
Synthetic Comment Markers1 hit · 8 pts
SeverityFileLineSnippetContext
HIGHsrc/2-two/preTagger/model/clues/adj-past.js31 // being watched; it intoxicated him; as requestedCOMMENT
Slop Phrases5 hits · 6 pts
SeverityFileLineSnippetContext
LOWplugins/dates/tests/parsing/phrases.test.js17 [`don't forget to remind me about returning the library books`, `return`, `library book`, ``],CODE
LOWplugins/dates/tests/parsing/phrases.test.js122 [`don't forget to buy headphones before the flight`, `buy`, `headphone`, ``],CODE
LOWtests/02-two/postTagger/auxiliary-context.test.js50Don't forget to clean. {Aux,Negative,Inf,Connector,Inf}CODE
LOWtests/lib/tag-match-cases.js749 [`don't forget to clean`, `#Verb not #Imperative to #Imperative`],CODE
LOWsrc/2-two/postTagger/model/index.js1006 // don't forget to [clean] → ImperativeCOMMENT
Fake / Example Data2 hits · 2 pts
SeverityFileLineSnippetContext
LOWplugins/dates/tests/tagger/false-positive.test.js132 '555-1212',CODE
LOWtests/02-two/tag/representative-text.test.js17 ['123 Main Street', 'Address|NumericValue Address Address'],CODE