AI Slop Code Risk Monitor

IntersectMBO/cardano-node

SlopCodeMonitor badge for IntersectMBO/cardano-node Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

The core component that is used to participate in a Cardano decentralised blockchain.

1.9 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for IntersectMBO/cardano-node, a Haskell project with 3,173 GitHub stars. SynthScan examined 112,559 lines of code across 507 source files, recording 159 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 1.9 (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.9
Adjusted Signal
1.9
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
3.2K
Stars
Haskell
Language
112.6K
Lines of Code
507
Files
159
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 8.2/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.0/100 · LOW

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

Agent Over-Engineering Ratio 1.1/100 · LOW

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

PR Review Velocity Impact 9.1/100 · LOW

Which changes need focused human review? 159 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 0MEDIUM 28LOW 131

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 159 distinct pattern matches across 11 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 Block96 hits · 86 pts
SeverityFileLineSnippetContext
LOW.hlint.yaml1# HLint configuration fileCOMMENT
LOW.hlint.yaml21# - flags:COMMENT
LOW.hlint.yaml41#COMMENT
LOW.stylish-haskell.yaml1# Stylish-haskell configuration file.COMMENT
LOW.herald.yml1# Herald configurationCOMMENT
LOWcardano-testnet/.changes/_TEMPLATE.yml1# Changelog fragment template - copy this file and fill in the fields.COMMENT
LOWconfiguration/defaults/byron-mainnet/configuration.yaml61# The system supports a number of backends for logging and monitoring.COMMENT
LOWconfiguration/defaults/byron-mainnet/configuration.yaml81# - "127.0.0.1"COMMENT
LOWconfiguration/cardano/mainnet-config.yaml1################################################################################COMMENT
LOWconfiguration/cardano/mainnet-config.yaml61 #COMMENT
LOWconfiguration/cardano/mainnet-config.yaml81 # the following three node config parameters which previously requiredCOMMENT
LOWconfiguration/cardano/mainnet-config.yaml101 # MempoolTimeoutHard: 1.5COMMENT
LOWconfiguration/cardano/mainnet-config.yaml121 Storage:COMMENT
LOWconfiguration/cardano/mainnet-config.yaml161 # only carries them, it does not interpret their shape.COMMENT
LOWconfiguration/cardano/mainnet-config.yaml181 # The queue capacity should thus correlate to the expected log lines perCOMMENT
LOWconfiguration/cardano/mainnet-config.yaml201 # tracing system.COMMENT
LOWconfiguration/cardano/mainnet-config.yaml221 # The full list of severities are:COMMENT
LOWnix/workbench/publish.sh101 #### Overrides the NOMAD_ADDR environment variable if set.COMMENT
LOWnix/workbench/run.sh561 # that is called by `run set-current`. This error is only showingCOMMENT
LOWnix/workbench/nomad.sh401 ;;COMMENT
LOWnix/workbench/nomad.sh781 pgrep -d ' ' -f "nomad.*${config_file}.*"COMMENT
LOWnix/workbench/nomad.sh801 # "@level": "error",COMMENT
LOWnix/workbench/nomad.sh1281 # -> DefaultDeploymentID (for the evaluation deployment)COMMENT
LOWnix/workbench/nomad.sh1301 # requested task driver is not available, the initialCOMMENT
LOWnix/workbench/nomad.sh1901####### job -> node-specs )#####################################################COMMENT
LOWnix/workbench/nomad.sh2041 # P2P uses "address" instead of "addr" and is:COMMENT
LOWnix/workbench/nomad.sh2201}COMMENT
LOWnix/workbench/lib.sh261}COMMENT
LOWnix/workbench/backend/nomad.sh21COMMENT
LOWnix/workbench/backend/nomad.sh41 # - allocate-run-nomad-job-patch-nix RUN-DIR (Nomad only)COMMENT
LOWnix/workbench/backend/nomad.sh761 ;;COMMENT
LOWnix/workbench/backend/nomad.sh1521 rm -fr "${dir}"/node-*/state-cluster/COMMENT
LOWnix/workbench/backend/nomad.sh1701 fiCOMMENT
LOWnix/workbench/backend/nomad.sh2201 return 0COMMENT
LOWnix/workbench/backend/nomad.sh2981 local program=${1:?$usage}; shiftCOMMENT
LOWnix/workbench/backend/nomad.sh3241 # abstraction over that.COMMENT
LOWnix/workbench/backend/nomad.sh3341 * )COMMENT
LOWnix/workbench/backend/nomad.sh3361# https://developer.hashicorp.com/nomad/docs/install/production/requirements#network-topologyCOMMENT
LOWnix/workbench/backend/nomad.sh3381# Names:COMMENT
LOWnix/workbench/backend/nomad.sh3401# the replicated log and snapshot data. This must be specified as an absoluteCOMMENT
LOWnix/workbench/backend/nomad.sh3421 rpc = ${rpc_port}COMMENT
LOWnix/workbench/backend/nomad.sh3441 # all the nodes from which end users are going to use the Nomad CLI tools.COMMENT
LOWnix/workbench/backend/nomad.sh3461 http = falseCOMMENT
LOWnix/workbench/backend/nomad.sh3481# filename defaults to nomad.log. This setting can be combined withCOMMENT
LOWnix/workbench/backend/nomad.sh3501# signal. By default, the agent will exit forcefully on any signal. This valueCOMMENT
LOWnix/workbench/backend/nomad.sh3521 # Specifies if this agent should run in server mode. All other server options depend on this value being set.COMMENT
LOWnix/workbench/backend/nomad.sh3541 # time. Reducing this interval is useful if there is a large throughput ofCOMMENT
LOWnix/workbench/backend/nomad.sh3561 rejoin_after_leave = falseCOMMENT
LOWnix/workbench/backend/nomad.sh3581 # whenever they are accessible. In this scenario, the client will enforceCOMMENT
LOWnix/workbench/backend/nomad.sh3641 fiCOMMENT
LOWnix/workbench/backend/nomad.sh3661# individual agents. When specified on a server, the name must be unique withinCOMMENT
LOWnix/workbench/backend/nomad.sh3681# including the HTTP interface as well as the internal gossip protocol and RPCCOMMENT
LOWnix/workbench/backend/nomad.sh3701# take precedence over the default "bind_addr".COMMENT
LOWnix/workbench/backend/nomad.sh3721}COMMENT
LOWnix/workbench/backend/nomad.sh3741# Specifies the verbosity of logs the Nomad agent will output. Valid log levelsCOMMENT
LOWnix/workbench/backend/nomad.sh3761# Specifies if the agent should gracefully leave when receiving the interruptCOMMENT
LOWnix/workbench/backend/nomad.sh3781COMMENT
LOWnix/workbench/backend/nomad.sh3801 # specified as an IP address or DNS, with or without the port. If the port isCOMMENT
LOWnix/workbench/backend/nomad.sh3821 # "artifact" parameters (fail fast!!!)COMMENT
LOWnix/workbench/backend/nomad.sh3841 # downloads. Applies only to systems where filesystem isolation via landlockCOMMENT
36 more matches not shown…
Self-Referential Comments13 hits · 39 pts
SeverityFileLineSnippetContext
MEDIUM.hlint.yaml5# This file contains a template configuration file, which is typicallyCOMMENT
MEDIUMnix/workbench/nomad.sh220 # Create the base JSON string but without the "attributes" because thoseCOMMENT
MEDIUMnix/workbench/lib.sh298 # Create a wew array without the newly exited process.COMMENT
MEDIUMnix/workbench/backend/nomad.sh79 # Create the dispatcher's local directories hierarchy.COMMENT
MEDIUMnix/workbench/backend/nomad.sh112 # Create a unique dedicated tracer only when not one-tracer-per-node.COMMENT
MEDIUMnix/workbench/backend/nomad.sh642 # Create a symlink to the allocations IDs inside the run directory andCOMMENT
MEDIUMnix/workbench/backend/nomad/cloud.sh267 # Create a nicely sorted and indented copyCOMMENT
MEDIUMnix/workbench/backend/nomad/exec.sh178 # Create a nicely sorted and indented copyCOMMENT
MEDIUMnix/workbench/genesis/genesis-jq.sh128 # Create an empty entry if directory does not exist.COMMENT
MEDIUMscripts/byron-to-alonzo/update-4.sh33# Create the update proposal to change the protocol version to 4COMMENT
MEDIUMscripts/byron-to-alonzo/update-4.sh43# Create a transaction body containing the update proposal.COMMENT
MEDIUMscripts/byron-to-alonzo/update-5.sh33# Create the update proposal to change the protocol version to 5COMMENT
MEDIUMscripts/byron-to-alonzo/update-5.sh43# Create a transaction body containing the update proposal.COMMENT
Decorative Section Separators8 hits · 24 pts
SeverityFileLineSnippetContext
MEDIUMnix/workbench/genesis/genesis.sh207 # ==========================================================================COMMENT
MEDIUMnix/workbench/genesis/genesis.sh209 # ==========================================================================COMMENT
MEDIUMnix/workbench/genesis/genesis-ripper.sh98# ==============================================================================COMMENT
MEDIUMnix/workbench/genesis/genesis-ripper.sh100# ==============================================================================COMMENT
MEDIUMnix/workbench/genesis/genesis-ripper.sh317# ==============================================================================COMMENT
MEDIUMnix/workbench/genesis/genesis-ripper.sh319# ==============================================================================COMMENT
MEDIUMnix/workbench/genesis/genesis-ripper.sh659# ==============================================================================COMMENT
MEDIUMnix/workbench/genesis/genesis-ripper.sh661# ==============================================================================COMMENT
Structural Annotation Overuse12 hits · 18 pts
SeverityFileLineSnippetContext
LOWscripts/babbage/script-context-equivalance-test.sh36# Step 1: Create a tx output with a datum hash at the script address. In order for a tx output to be lockedCOMMENT
LOWscripts/babbage/example-babbage-script-usage.sh33## Step 1: Create a tx output with a datum hash at the script address. In order for a tx output to be lockedCOMMENT
LOW…xample/register-and-delegate-script-staking-address.sh67# Step 1: Create certifying reference script at tx outCOMMENT
LOW…xample/register-and-delegate-script-staking-address.sh96# Step 2: Create and submit registration certificate for the staking scriptCOMMENT
LOWscripts/plutus/simple-minting-policy.sh17# Step 1 - Send ADA to token script ownerCOMMENT
LOWscripts/plutus/simple-minting-policy.sh71# Step 2: Mint a single 4D696C6C6172436F696ECOMMENT
LOWscripts/plutus/always-fails.sh31# Step 1: Create a tx output with a datum hash at the script address. In order for a tx output to be lockedCOMMENT
LOW…ipts/plutus/script-context-equivalence-test-minting.sh17# Step 1 - Send ADA to token script ownerCOMMENT
LOW…ipts/plutus/script-context-equivalence-test-minting.sh72# Step 2: Mint a single MillarCoinCOMMENT
LOWscripts/plutus/example-txin-locking-plutus-script.sh59# Step 1: Create a tx output with a datum hash at the script address. In order for a tx output to be lockedCOMMENT
LOWscripts/plutus/script-context-equivalance-test.sh30# Step 1: Create a tx output with a datum hash at the script address. In order for a tx output to be lockedCOMMENT
LOWscripts/plutus/staking-example/register-stake-pool.sh316# Step 1: Create registration certificate for the staking scriptCOMMENT
Verbosity Indicators10 hits · 15 pts
SeverityFileLineSnippetContext
LOWscripts/babbage/script-context-equivalance-test.sh36# Step 1: Create a tx output with a datum hash at the script address. In order for a tx output to be lockedCOMMENT
LOWscripts/babbage/example-babbage-script-usage.sh33## Step 1: Create a tx output with a datum hash at the script address. In order for a tx output to be lockedCOMMENT
LOW…xample/register-and-delegate-script-staking-address.sh67# Step 1: Create certifying reference script at tx outCOMMENT
LOW…xample/register-and-delegate-script-staking-address.sh96# Step 2: Create and submit registration certificate for the staking scriptCOMMENT
LOWscripts/plutus/simple-minting-policy.sh71# Step 2: Mint a single 4D696C6C6172436F696ECOMMENT
LOWscripts/plutus/always-fails.sh31# Step 1: Create a tx output with a datum hash at the script address. In order for a tx output to be lockedCOMMENT
LOW…ipts/plutus/script-context-equivalence-test-minting.sh72# Step 2: Mint a single MillarCoinCOMMENT
LOWscripts/plutus/example-txin-locking-plutus-script.sh59# Step 1: Create a tx output with a datum hash at the script address. In order for a tx output to be lockedCOMMENT
LOWscripts/plutus/script-context-equivalance-test.sh30# Step 1: Create a tx output with a datum hash at the script address. In order for a tx output to be lockedCOMMENT
LOWscripts/plutus/staking-example/register-stake-pool.sh316# Step 1: Create registration certificate for the staking scriptCOMMENT
Redundant / Tautological Comments9 hits · 14 pts
SeverityFileLineSnippetContext
LOWnix/workbench/lib-cabal.sh3# Check if we build with profiling.COMMENT
LOWnix/workbench/lib-cabal.sh12# Check if we build with info-table.COMMENT
LOWnix/workbench/publish.sh357 # Check if the connection to the postgres server is onlineCOMMENT
LOWnix/workbench/publish.sh396 # Check if the process is runningCOMMENT
LOWnix/workbench/publish.sh519 # Check if the connection to the postgres server is onlineCOMMENT
LOWnix/workbench/publish.sh558 # Check if the process is runningCOMMENT
LOWnix/workbench/backend/nomad/cloud.sh339 # Check if the Nix package was created from a dirty git treeCOMMENT
LOWnix/workbench/backend/nomad/cloud.sh686 # Check if there is enough free storage space available!COMMENT
LOWcardano-submit-api/test/run.sh15 # Check if the server is runningCOMMENT
AI Slop Vocabulary5 hits · 13 pts
SeverityFileLineSnippetContext
MEDIUM…cardano-profile/data/genesis/overlays/v10-preview.json2 "description": "PlutusV2 cost-model entries for the integerToByteString / byteStringToInteger families (Plutus's `batcCODE
MEDIUMbench/grafana-datasource/package-lock.json4984 "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz",CODE
MEDIUMscripts/plutus/simple-minting-policy.sh10# Cardano.CLI.Plutus.SimpleMintingScript. Essentially we demand that theCOMMENT
MEDIUM…ipts/plutus/script-context-equivalence-test-minting.sh10# Cardano.CLI.Plutus.SimpleMintingScript. Essentially we demand that theCOMMENT
MEDIUM.github/workflows/haskell.yml156 # SIGINT, not SIGTERM: the harness tears its nodes down on SIGINT onlyCOMMENT
Modern AI Meta-Vocabulary2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMnix/workbench/run.sh621 ## Add global_basedir Voltaire Plutus guardrails scriptCOMMENT
MEDIUMnix/workbench/backend/nomad/cloud.sh916 # unique in the tree (the genesis JSON files, the guardrails script).COMMENT
Hyper-Verbose Identifiers2 hits · 2 pts
SeverityFileLineSnippetContext
LOWnix/workbench/topology/topology.sh75 def nixops_topology_set_pool_density($topo; $density):CODE
LOWnix/cardanolib-py/cardanolib.py419 def create_stake_address_and_cert(self, name):CODE
Unused Imports1 hit · 1 pts
SeverityFileLineSnippetContext
LOWnix/cardanolib-py/cardanolib.py2CODE
Deep Nesting1 hit · 1 pts
SeverityFileLineSnippetContext
LOWnix/cardanolib-py/cardanolib.py157CODE