AI Slop Code Risk Monitor

sequelize/sequelize

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

Feature-rich ORM for modern Node.js and TypeScript, it supports PostgreSQL (with JSON and JSONB support), MySQL, MariaDB, SQLite, MS SQL Server, Snowflake, Oracle DB, DB2 and DB2 for IBM i.

1.0 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for sequelize/sequelize, a TypeScript project with 30,346 GitHub stars. SynthScan examined 186,147 lines of code across 913 source files, recording 153 pattern matches distributed across 9 syntactic categories. The legacy adjusted pattern signal is 1.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.

1.0
Adjusted Signal
1.0
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
30.3K
Stars
TypeScript
Language
186.1K
Lines of Code
913
Files
153
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 2.8/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 2.1/100 · LOW

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

Agent Over-Engineering Ratio 1.8/100 · LOW

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

PR Review Velocity Impact 4.5/100 · LOW

Which changes need focused human review? 153 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 1HIGH 1MEDIUM 2LOW 149

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 153 distinct pattern matches across 9 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.

Fake / Example Data59 hits · 70 pts
SeverityFileLineSnippetContext
LOWpackages/core/test/unit/utils/undot.test.ts342 'profile.addresses[0].street': '123 Main St',CODE
LOWpackages/core/test/unit/utils/undot.test.ts356 { street: '123 Main St', city: 'NYC' },CODE
LOW…es/core/test/integration/associations/has-many.test.js1390 username: 'John Doe',CODE
LOW…kages/core/test/integration/data-types/methods.test.ts103 await project.addStakeholder(user2, { through: { key: 'dummy-value' } });CODE
LOW…/core/test/integration/include/findAndCountAll.test.js60 { name: 'Jane Doe', fk: 1 },CODE
LOW…/core/test/integration/include/findAndCountAll.test.js61 { name: 'John Doe', fk: 4 },CODE
LOW⚡…es/core/test/integration/sequelize/transaction.test.ts283 await vars.User.create({ name: 'John Doe', age: 21 });CODE
LOW⚡…es/core/test/integration/sequelize/transaction.test.ts292 await User.update({ age: 22 }, { where: { name: 'John Doe' }, transaction });CODE
LOW⚡…es/core/test/integration/sequelize/transaction.test.ts298 const johnDoe = await User.findOne({ where: { name: 'John Doe' }, transaction });CODE
LOW⚡…es/core/test/integration/sequelize/transaction.test.ts307 expect(users[0].name).to.equal('John Doe');CODE
LOW⚡…es/core/test/integration/sequelize/transaction.test.ts314 await User.create({ name: 'Jane Doe', age: 21 }, { transaction });CODE
LOW⚡…es/core/test/integration/sequelize/transaction.test.ts346 await User.update({ age: 22 }, { where: { name: 'John Doe' }, transaction: t1 });CODE
LOW⚡…es/core/test/integration/sequelize/transaction.test.ts350 const johnDoe = await User.findOne({ where: { name: 'John Doe' }, transaction });CODE
LOW⚡…es/core/test/integration/sequelize/transaction.test.ts357 const johnDoe = await User.findOne({ where: { name: 'John Doe' } });CODE
LOW⚡…es/core/test/integration/sequelize/transaction.test.ts373 await User.update({ age: 22 }, { where: { name: 'John Doe' }, transaction: t1 });CODE
LOW⚡…es/core/test/integration/sequelize/transaction.test.ts377 const johnDoe = await User.findOne({ where: { name: 'John Doe' }, transaction });CODE
LOW⚡…es/core/test/integration/sequelize/transaction.test.ts384 const johnDoe = await User.findOne({ where: { name: 'John Doe' } });CODE
LOW⚡…es/core/test/integration/sequelize/transaction.test.ts400 const johnDoe = await User.findOne({ where: { name: 'John Doe' }, transaction: t1 });CODE
LOW⚡…es/core/test/integration/sequelize/transaction.test.ts402 expect(johnDoe.name).to.equal('John Doe');CODE
LOW⚡…es/core/test/integration/sequelize/transaction.test.ts408 await User.update({ age: 22 }, { where: { name: 'John Doe' }, transaction });CODE
LOW⚡…es/core/test/integration/sequelize/transaction.test.ts412 const johnDoe1 = await User.findOne({ where: { name: 'John Doe' }, transaction: t1 });CODE
LOW⚡…es/core/test/integration/sequelize/transaction.test.ts414 expect(johnDoe1.name).to.equal('John Doe');CODE
LOW⚡…es/core/test/integration/sequelize/transaction.test.ts452 expect(users[0].name).to.equal('John Doe');CODE
LOW⚡…es/core/test/integration/sequelize/transaction.test.ts458 await User.create({ name: 'Jane Doe', age: 21 }, { transaction });CODE
LOW⚡…es/core/test/integration/sequelize/transaction.test.ts464 expect(users2[0].name).to.equal('John Doe');CODE
LOW⚡…es/core/test/integration/sequelize/transaction.test.ts466 expect(users2[1].name).to.equal('Jane Doe');CODE
LOW…es/core/test/integration/sequelize/transaction.test.ts329 await User.create({ name: 'Jane Doe', age: 21 }); // Create a User outside of the transactionCODE
LOW…es/core/test/integration/sequelize/transaction.test.ts435 await User.create({ name: 'Jane Doe', age: 21 }); // Create a User outside of the transactionCODE
LOW…es/core/test/integration/sequelize/transaction.test.ts488 User.update({ age: 25 }, { where: { name: 'John Doe' } }).then(() => {CODE
LOW…ges/core/test/integration/dialects/mariadb/dao.test.js90 email: 'foo@bar.com',CODE
LOW…ges/core/test/integration/dialects/mariadb/dao.test.js104 email: 'foo@bar.com',CODE
LOW…ges/core/test/integration/dialects/mariadb/dao.test.js118 const user0 = await User.create({ username: 'user', email: 'foo@bar.com', location: point });CODE
LOW…e/test/integration/dialects/sqlite/dao-factory.test.js78 name: 'John Doe',CODE
LOW…e/test/integration/dialects/sqlite/dao-factory.test.js96 name: 'John Doe',CODE
LOW…e/test/integration/dialects/sqlite/dao-factory.test.js114 name: 'John Doe',CODE
LOW⚡…es/core/test/integration/dialects/postgres/dao.test.js548 email: ['foo@bar.com', 'bar@baz.com'],CODE
LOW⚡…es/core/test/integration/dialects/postgres/dao.test.js551 expect(oldUser.email).to.contain.members(['foo@bar.com', 'bar@baz.com']);CODE
LOW⚡…es/core/test/integration/dialects/postgres/dao.test.js557 email: ['foo@bar.com'],CODE
LOW…es/core/test/integration/dialects/postgres/dao.test.js611 email: ['foo@bar.com'],CODE
LOW…es/core/test/integration/dialects/postgres/dao.test.js631 email: ['foo@bar.com'],CODE
LOW…es/core/test/integration/dialects/postgres/dao.test.js644 const data = { username: 'user', email: ['foo@bar.com'], settings: { test: '"value"' } };CODE
LOW…es/core/test/integration/dialects/postgres/dao.test.js655 email: ['foo@bar.com'],CODE
LOW…es/core/test/integration/dialects/postgres/dao.test.js671 email: ['foo@bar.com'],CODE
LOW…es/core/test/integration/dialects/postgres/dao.test.js712 email: ['foo@bar.com'],CODE
LOW…es/core/test/integration/dialects/postgres/dao.test.js791 email: ['foo@bar.com'],CODE
LOW…es/core/test/integration/dialects/postgres/dao.test.js826 email: ['foo@bar.com'],CODE
LOW…es/core/test/integration/dialects/postgres/dao.test.js852 const data = { username: 'user', email: ['foo@bar.com'], course_period };CODE
LOW…es/core/test/integration/dialects/postgres/dao.test.js872 const data = { username: 'user', email: ['foo@bar.com'], holidays };CODE
LOW…es/core/test/integration/dialects/postgres/dao.test.js887 await User.create({ username: 'user1', email: ['foo@bar.com'], course_period: periods[0] });CODE
LOW…es/core/test/integration/dialects/postgres/dao.test.js912 const user0 = await this.User.create({ username: 'user', email: ['foo@bar.com'] });CODE
LOW…es/core/test/integration/dialects/postgres/dao.test.js929 email: ['foo@bar.com'],CODE
LOW…es/core/test/integration/dialects/postgres/dao.test.js941 email: ['foo@bar.com'],CODE
LOW…es/core/test/integration/dialects/postgres/dao.test.js955 const user0 = await User.create({ username: 'user', email: ['foo@bar.com'], location: point });CODE
LOWpackages/core/test/integration/model/upsert.test.js122 await User.upsert({ name: 'John Doe' });CODE
LOWpackages/core/test/integration/model/create.test.js1156 await User.create({ name: 'John Doe' });CODE
LOWpackages/core/test/integration/model/create.test.js1276 const user = await User.create({ name: 'John Doe', options });CODE
LOWpackages/core/src/model.d.ts3330 * @Default('John Doe')COMMENT
LOWpackages/core/src/decorators/legacy/attribute.ts212 * @Default('John Doe')COMMENT
LOWpackages/cli/static/skeletons/seed.ts9 * name: 'John Doe',COMMENT
Hyper-Verbose Identifiers67 hits · 67 pts
SeverityFileLineSnippetContext
LOWpackages/core/test/support.ts529function replaceGenericIdentifierQuotes(sql: string, dialect: AbstractDialect): string {CODE
LOWpackages/core/test/support.ts709export function setIsIntegrationTestSuite(value: boolean): void {CODE
LOWpackages/core/test/unit/utils/sql.test.ts1102function supportsNonStandardConformingStrings() {CODE
LOWpackages/core/test/unit/utils/sql.test.ts1108function getNonStandardConfirmingStringDialect() {CODE
LOWpackages/core/test/unit/sql/where.test.ts178 function testSequelizeValueMethods(CODE
LOWpackages/core/test/unit/sql/where.test.ts2832 function describeAdjacentRangeSuite(CODE
LOWpackages/core/test/integration/model.test.js1355 function definePostReferencingMissingTable(context) {CODE
LOWpackages/core/test/integration/json.test.ts89 before(async function checkOracleVersionForJSONSupport(this: Mocha.Context) {CODE
LOWpackages/core/test/integration/support.ts92export function destroySequelizeAfterTest(sequelizeInstance: Sequelize): void {CODE
LOWpackages/core/test/integration/support.ts359export async function isOracleJSONConstraintsSupported(): Promise<boolean> {CODE
LOW…es/core/test/integration/data-types/data-types.test.ts1700 before(async function checkOracleVersionForJSONSupport(this: Mocha.Context) {CODE
LOW…ges/core/test/integration/data-types/geography.test.ts14async function createUserModelWithGeography(type?: GeoJsonType, srid?: number) {CODE
LOW…ages/core/test/integration/data-types/geometry.test.ts20async function createUserModelWithGeometry(type?: GeoJsonType) {CODE
LOWpackages/core/src/sql-string.ts7export function getTextDataTypeForDialect(dialect: AbstractDialect): AbstractDataType<any> {CODE
LOWpackages/core/src/geo-json.ts149export function assertIsGeoJsonLineString(value: unknown): asserts value is GeoJsonLineString {CODE
LOWpackages/core/src/geo-json.ts199export function assertIsGeoJsonMultiPoint(value: unknown): asserts value is GeoJsonMultiPoint {CODE
LOWpackages/core/src/geo-json.ts220export function assertIsGeoJsonMultiLineString(CODE
LOWpackages/core/src/geo-json.ts251export function assertIsGeoJsonMultiPolygon(value: unknown): asserts value is GeoJsonMultiPolygon {CODE
LOWpackages/core/src/geo-json.ts288export function assertIsGeoJsonGeometryCollection(CODE
LOWpackages/core/src/model-internals.ts208export function getPrimaryKeyValueOrThrow(instance: Model, attributeName: string): unknown {CODE
LOWpackages/core/src/transaction.ts603export function normalizeTransactionOptions(CODE
LOWpackages/core/src/transaction.ts628export function assertTransactionIsCompatibleWithOptions(CODE
LOWpackages/core/src/transaction.ts660function assertSupportedTransactionOptions(CODE
LOW…l-internals/get-belongs-to-associations-with-target.ts9export function getBelongsToAssociationsWithTarget(target: ModelStatic): BelongsToAssociation[] {CODE
LOWpackages/core/src/associations/helpers.ts145function getAssociationsIncompatibilityStatus(CODE
LOWpackages/core/src/associations/helpers.ts168export function assertAssociationModelIsDefined(model: ModelStatic<any>): void {CODE
LOWpackages/core/src/decorators/legacy/decorator-utils.ts100export function throwMustBeStaticProperty(CODE
LOWpackages/core/src/decorators/legacy/decorator-utils.ts120export function throwMustBeInstanceProperty(CODE
LOW…ages/core/src/decorators/legacy/built-in-attributes.ts12function createBuiltInAttributeDecorator(CODE
LOWpackages/core/src/decorators/legacy/associations.ts126export function initDecoratedAssociations(source: ModelStatic, sequelize: Sequelize): void {CODE
LOWpackages/core/src/decorators/shared/model.ts67export function registerModelAttributeOptions(CODE
LOWpackages/core/src/decorators/shared/model.ts177function getRegisteredModelOptions(model: ModelStatic): ModelOptions {CODE
LOWpackages/core/src/decorators/shared/model.ts201function getRegisteredAttributeOptions(model: ModelStatic): RegisteredAttributeOptions {CODE
LOWpackages/core/src/utils/sql.ts28function mapBindParametersAndReplacements(CODE
LOWpackages/core/src/utils/sql.ts290function escapeValueWithBackCompat(CODE
LOWpackages/core/src/utils/sql.ts380export function createUnspecifiedOrderedBindCollector(token = '?'): BindCollector {CODE
LOWpackages/core/src/utils/sql.ts402export function createSpecifiedOrderedBindCollector(prefix = '$'): BindCollector {CODE
LOWpackages/core/src/utils/sql.ts427export function createNamedParamBindCollector(parameterPrefix: string): BindCollector {CODE
LOWpackages/core/src/utils/sql.ts514export function formatMySqlStyleLimitOffset(CODE
LOWpackages/core/src/utils/attribute-syntax.ts174function parseAttributeSyntaxInternal(CODE
LOWpackages/core/src/utils/attribute-syntax.ts268function parseJsonPropertyKeyInternal(code: string): ParsedJsonPropertyKey {CODE
LOWpackages/core/src/utils/format.ts121export function removeNullishValuesFromHash(CODE
LOWpackages/core/src/utils/check.ts80function getEnumerablePropertyValue(obj: object, propertyName: string): unknown {CODE
LOWpackages/core/src/utils/check.ts142export function buildInvalidOptionReceivedError(CODE
LOWpackages/core/src/utils/undot.ts253export function transformRowWithPrecompiled(CODE
LOW…ore/src/abstract-dialect/query-generator-typescript.ts85export function normalizeAttributeToSqlColumn(column: AttributeToSqlInput): AttributeToSqlColumn {CODE
LOWpackages/core/src/abstract-dialect/data-types-utils.ts61export function dataTypeClassOrInstanceToInstance(Type: DataTypeClassOrInstance): DataTypeInstance {CODE
LOWpackages/core/src/abstract-dialect/data-types-utils.ts115export function attributeTypeToDataTypeId(type: AbstractDataType<any> | string): string {CODE
LOWpackages/core/src/abstract-dialect/query.ts145function getAttributeNameFromColumn(model: ModelStatic, columnOrAttribute: string): string {CODE
LOWpackages/core/src/abstract-dialect/query.ts233function buildHashAttributeRowKeys(CODE
LOWpackages/mariadb/src/connection-manager.ts23function ignoreErrorUntilInitialized() {}CODE
LOWpackages/mariadb/src/_internal/data-types-db.ts12export function registerMariaDbDbDataTypeParsers(dialect: MariaDbDialect) {CODE
LOW…ckages/utils/src/common/parsers/parse-finite-number.ts7function parseFiniteNumberInternal(value: string | bigint): number | null {CODE
LOW…/src/common/comparators/localized-string-comparator.ts12export function localizedStringComparator(CODE
LOWpackages/cli/src/api/get-umzug.ts40async function getUniversalUmzugMigrations(): Promise<Array<RunnableMigration<UmzugContext>>> {CODE
LOWpackages/postgres/src/connection-manager.ts25function ignoreErrorUntilInitialized() {}CODE
LOWpackages/postgres/src/_internal/data-types-db.ts16export function registerPostgresDbDataTypeParsers(dialect: PostgresDialect) {CODE
LOWpackages/postgres/src/_internal/data-types-overrides.ts18function removeUnsupportedIntegerOptions(CODE
LOWpackages/sqlite3/src/_internal/data-types-overrides.ts6function removeUnsupportedIntegerOptions(CODE
LOWpackages/sqlite3/src/_internal/data-types-overrides.ts18function removeUnsupportedDecimalNumberOptions(CODE
7 more matches not shown…
Over-Commented Block17 hits · 17 pts
SeverityFileLineSnippetContext
LOWpackages/core/test/unit/associations/has-many.test.ts161 // TODO: remove this eslint-disable once we drop support for TypeScript <= 5.3COMMENT
LOWpackages/core/test/unit/decorators/associations.test.ts41 expect(Profile.associations.user1.foreignKey).to.eq('userId');COMMENT
LOWpackages/core/test/unit/sql/literal.test.ts61 });COMMENT
LOW…kages/core/test/integration/hooks/associations.test.js81COMMENT
LOW…kages/core/test/integration/hooks/associations.test.js101 // this.Projects.hasOne(this.Tasks, { foreignKey: { onDelete: 'CASCADE' }, hooks: true });COMMENT
LOW…kages/core/test/integration/hooks/associations.test.js121 // expect(beforeProject).to.have.been.calledOnce;COMMENT
LOW…kages/core/test/integration/hooks/associations.test.js141 //COMMENT
LOW…kages/core/test/integration/hooks/associations.test.js281 // });COMMENT
LOW…kages/core/test/integration/hooks/associations.test.js301 // this.Projects.afterCreate(afterProject);COMMENT
LOW…kages/core/test/integration/hooks/associations.test.js321 // this.Projects.beforeCreate(async () => {COMMENT
LOW…kages/core/test/integration/hooks/associations.test.js341 //COMMENT
LOWpackages/core/test/integration/model/findOne.test.js321COMMENT
LOWpackages/core/src/model-repository.ts201 throw new Error(COMMENT
LOWpackages/postgres/src/_internal/data-types-db.ts81COMMENT
LOWpackages/sqlite3/src/query-generator.js81 // if (typeof indexName !== 'string') {COMMENT
LOW.github/workflows/ci.yml321 - name: Integration TestsCOMMENT
LOW.github/workflows/ci.yml341 # cache: yarnCOMMENT
Hallucination Indicators1 hit · 10 pts
SeverityFileLineSnippetContext
CRITICALpackages/core/test/integration/sequelize/query.test.js495 ).to.eventually.be.rejected.and.not.be.an.instanceOf(DatabaseError);CODE
Synthetic Comment Markers1 hit · 8 pts
SeverityFileLineSnippetContext
HIGH…/core/src/abstract-dialect/query-interface-internal.ts103 * Returns whether {@link AbstractQueryInterface#changeColumn} needs to add a unique key to the column, as requested bCOMMENT
Slop Phrases3 hits · 4 pts
SeverityFileLineSnippetContext
LOWpackages/core/src/sequelize-typescript.ts1013 * If you really want to use the manual solution, don't forget to commit or rollback your transaction once you are donCOMMENT
LOWpackages/core/src/model.js160 * @param {symbol} secret Secret used to ensure Model.build is used instead of new Model(). Don't forget to pass it uCOMMENT
LOW…ore/src/abstract-dialect/query-interface-typescript.ts767 * Don't forget to turn them back on, use {@link withoutForeignKeyChecks} to do this automatically.COMMENT
TODO Padding3 hits · 4 pts
SeverityFileLineSnippetContext
LOWpackages/core/src/model-repository.ts112 // TODO: implement once updateMany is implemented - https://github.com/sequelize/sequelize/issues/4501COMMENT
LOWpackages/core/src/model-repository.ts299 // TODO: implement once bulkUpdate is implementedCOMMENT
LOWpackages/core/src/model-repository.ts304 // TODO: implement once bulkUpdate is implementedCOMMENT
AI Slop Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUM…kages/mssql/src/query-generator-typescript.internal.ts462 // definitions. Can be made more robust to support theCOMMENT
Self-Referential Comments1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUM.github/workflows/authors.yml30 - uses: gr2m/create-or-update-pull-request-action@b65137ca591da0b9f43bad7b24df13050ea45d1b # Create a PR or updateCODE