AI Slop Code Risk Monitor

modem-dev/hunk

SlopCodeMonitor badge for modem-dev/hunk Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

Review-first terminal diff viewer for agentic coders

2.3 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for modem-dev/hunk, a TypeScript project with 9,731 GitHub stars. SynthScan examined 400,209 lines of code across 1472 source files, recording 890 pattern matches distributed across 7 syntactic categories. The legacy adjusted pattern signal is 2.3 (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.3
Adjusted Signal
2.3
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
9.7K
Stars
TypeScript
Language
400.2K
Lines of Code
1.5K
Files
890
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 10.5/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.0/100 · LOW

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

Agent Over-Engineering Ratio 10.7/100 · LOW

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

PR Review Velocity Impact 10.8/100 · LOW

Which changes need focused human review? 890 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 14LOW 876

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 890 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.

Hyper-Verbose Identifiers863 hits · 867 pts
SeverityFileLineSnippetContext
LOWtest/smoke/tty.test.ts20function supportsControllableScript() {CODE
LOWtest/smoke/tty.test.ts138function createLongWrapFixtureFiles() {CODE
LOWtest/pty/open-keyboard-integration.test.ts17function createTestOpenKeyboardFixture() {CODE
LOWtest/pty/watch-start-integration.test.ts13function createTestFirstInteractionWatchFixture(directory: string) {CODE
LOWtest/pty/open-scroll-integration.test.ts30function createOpenScrollTestFixture() {CODE
LOWtest/pty/terminal-theme-integration.test.ts74function createTestTerminalResponder(initialPalette: TestTerminalPalette) {CODE
LOWtest/pty/shell-completion-integration.test.ts44async function createTestCompletionShell(CODE
LOWtest/pty/empty-review-integration.test.ts15function createTestCleanRepoFixture() {CODE
LOWtest/pty/file-views-integration.test.ts57function createInteractiveViewExtension(directory: string) {CODE
LOWtest/pty/file-views-integration.test.ts107function createSyntaxViewExtension(directory: string) {CODE
LOWtest/pty/harness.test.ts6function createTestTransitionSession(screens: string[]) {CODE
LOWtest/pty/harness.ts272function createNumberedExportLines(start: number, count: number, valueOffset = 0) {CODE
LOWtest/pty/harness.ts370 function createWideCharacterFilePair() {CODE
LOWtest/pty/harness.ts392 function createDeletionOnlyFilePair() {CODE
LOWtest/pty/harness.ts441 function createGapAnnotatedAgentFilePair() {CODE
LOWtest/pty/harness.ts479 function createAgentNavigationRepoFixture() {CODE
LOWtest/pty/harness.ts570 function createExpandableContextFilePair() {CODE
LOWtest/pty/harness.ts624 function createLinkedWorktreeWatchFixture() {CODE
LOWtest/pty/harness.ts658 function createRepoExtensionFixture(CODE
LOWtest/pty/harness.ts720 function createMovedLinesRepoFixture() {CODE
LOWtest/pty/harness.ts753 function createNarrowHeaderTestRepoFixture() {CODE
LOWtest/pty/harness.ts764 function createUnicodePathRepoFixture() {CODE
LOWtest/pty/harness.ts784 function createElixirHeredocRepoFixture() {CODE
LOWtest/pty/harness.ts812 function createSmallMultiLanguageRepoFixture() {STRING
LOWtest/pty/harness.ts847 function createBinaryNavigationRepoFixture() {STRING
LOWtest/pty/harness.ts877 function createNestedSidebarRepoFixture() {STRING
LOWtest/pty/harness.ts893 function createManyShortFileRepoFixture(count = 8) {STRING
LOWtest/pty/harness.ts904 function createManyFileSidebarRepoFixture(count = 40) {STRING
LOWtest/pty/harness.ts917 function createPinnedHeaderRepoFixture() {STRING
LOWtest/pty/harness.ts933 function createRapidThemePreviewTestRepoFixture() {STRING
LOWtest/pty/harness.ts943 function createCollapsedTopRepoFixture() {STRING
LOWtest/pty/harness.ts990 function createSidebarJumpRepoFixture() {STRING
LOWtest/pty/harness.ts1021 function createBottomClampedRepoFixture() {STRING
LOWtest/pty/harness.ts1047 function createCrossFileHunkNavigationRepoFixture() {STRING
LOWtest/pty/harness.ts1123 function createMultiFilePagerPatchFixture() {STRING
LOWtest/pty/harness.ts1215 async function launchHunkWithFileBackedStdin(options: {STRING
LOWtest/pty/lifecycle.test.ts163async function waitForLifecycleTestSession(cwd: string, runtimeDir: string, port: number) {CODE
LOWtest/cli/install-vm/preflight.ts4export async function collectInstallVmPreflightFailures(CODE
LOWtest/cli/install-vm/repo-layout.ts14export function resolveHunkBinWrapperPath(repoRoot: string) {CODE
LOWtest/cli/install-vm/contract.ts115export function validateInstallVmCommandExpectation(expectation: string, exitCode?: number) {CODE
LOWtest/cli/install-vm/contract.ts340export function evaluateCommandExpectation(CODE
LOWtest/cli/install-vm/contract.ts417export function assertSafeInstallVmRuntimePath(CODE
LOWtest/cli/install-vm/contract.ts469export function assertDistinctInstallVmRuntimePaths(paths: Record<string, string>) {CODE
LOWtest/cli/install-vm/contract.ts504export function buildControllerImageCommand(CODE
LOWtest/cli/install-vm/contract.ts563export function buildDockerVmShellCommand(CODE
LOWtest/cli/install-vm/prepare-fixtures.ts73export function buildSyntheticPackageManifests(CODE
LOWtest/cli/install-vm/prepare-fixtures.ts128export function computeInstallVmFixtureSourceIdentity(repoRoot: string) {CODE
LOWtest/cli/install-vm/prepare-fixtures.ts344export async function deriveVerifiedDaemonUpgradeBinaryDigests(CODE
LOWtest/cli/install-vm/prepare-fixtures.ts502async function stageDaemonUpgradePackage(CODE
LOWtest/cli/install-vm/prepare-fixtures.ts548async function stageSyntheticCurlArchive(CODE
LOWtest/cli/install-vm/prepare-fixtures.ts578export function rewriteCurlInstallerForVmServer(installer: string) {CODE
LOWtest/cli/install-vm/prepare-daemon-upgrade-fixtures.ts75export function computeDaemonUpgradeBuildInputIdentity(CODE
LOWtest/cli/install-vm/prepare-daemon-upgrade-fixtures.ts127export function createDaemonUpgradeCompilerEnvironment(CODE
LOWtest/cli/install-vm/prepare-daemon-upgrade-fixtures.ts163export function snapshotDaemonUpgradeDependencies(repoRoot: string, destination: string) {CODE
LOWtest/cli/install-vm/prepare-daemon-upgrade-fixtures.ts205function assertNoDestinationParentSymlinks(root: string, relativePath: string) {CODE
LOWtest/cli/install-vm/prepare-daemon-upgrade-fixtures.ts216export function copyDaemonUpgradeCheckoutFiles(repoRoot: string, destination: string) {CODE
LOWtest/cli/install-vm/prepare-daemon-upgrade-fixtures.ts271export function rewriteDaemonUpgradeVariantSources(CODE
LOWtest/cli/install-vm/prepare-daemon-upgrade-fixtures.ts344export async function prepareDaemonUpgradeBinaries(repoRoot: string, buildRoot: string) {CODE
LOWtest/cli/install-vm/runtime-lock.ts24export function acquireInstallVmRuntimeLock(CODE
LOWtest/cli/install-vm/results.ts231function validateAuthenticatedDaemonUpgradeEvidence(CODE
803 more matches not shown…
Decorative Section Separators12 hits · 36 pts
SeverityFileLineSnippetContext
MEDIUMinstall.sh44# --------------------------------------------------------------------------------------COMMENT
MEDIUMinstall.sh46# --------------------------------------------------------------------------------------COMMENT
MEDIUMinstall.sh90# --------------------------------------------------------------------------------------COMMENT
MEDIUMinstall.sh92# --------------------------------------------------------------------------------------COMMENT
MEDIUMinstall.sh129# --------------------------------------------------------------------------------------COMMENT
MEDIUMinstall.sh131# --------------------------------------------------------------------------------------COMMENT
MEDIUMinstall.sh171# --------------------------------------------------------------------------------------COMMENT
MEDIUMinstall.sh173# --------------------------------------------------------------------------------------COMMENT
MEDIUMinstall.sh184# --------------------------------------------------------------------------------------COMMENT
MEDIUMinstall.sh186# --------------------------------------------------------------------------------------COMMENT
MEDIUMinstall.sh385# --------------------------------------------------------------------------------------COMMENT
MEDIUMinstall.sh387# --------------------------------------------------------------------------------------COMMENT
Over-Commented Block10 hits · 10 pts
SeverityFileLineSnippetContext
LOWinstall.sh1#!/bin/shCOMMENT
LOWinstall.sh21# HUNK_DISABLE_ANALYTICSCOMMENT
LOWscripts/quality/source-boundaries.test.ts341COMMENT
LOWscripts/launch-video/promo/engine.js1// Hunk's release-promo style kit: a timeline page for @hunk/term-video/timeline.COMMENT
LOWpackages/hunk/src/ui/fileViews/useFileViews.ts401 // Effects clean up after render. Exact per-file filtering synchronously declines stale geometryCOMMENT
LOWpackages/hunk/src/ui/diff/lineHighlightPaint.test.ts421 // recolor spans but never change the rendered width of a line. A column cutCOMMENT
LOWpackages/hunk/src/ui/diff/DiffSectionBody.tsx301 // - one file-local visible body slice from DiffPaneCOMMENT
LOWpackages/hunk/src/ui/components/panes/DiffPane.tsx2181COMMENT
LOWpackages/hunk/src/ui/lib/stml/layout.ts1// STML -> styled terminal lines. Turns a parsed STML tree into a flat list ofCOMMENT
LOW.github/workflows/install-sh-e2e.yml1# Runs the hunk.dev install script end to end against the newest published release.COMMENT
AI Slop Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMtest/cli/install-vm/guest/prepare-base-image.sh64# Older harness revisions cached an SSH identity; current runs use an ephemeral key.COMMENT
Modern AI Meta-Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMdocs/browser-review-rebuild.md21## Phase 0 — seam contract and guardrails (this doc)COMMENT
Fake / Example Data2 hits · 2 pts
SeverityFileLineSnippetContext
LOWpackages/hunk/src/ui/statusLine/extensionControls.ts116 ["placeholder", placeholder],CODE
LOWpackages/hunk/src/ui/diff/lineHighlightPaint.test.ts466 before: lines("placeholder"),CODE
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippetContext
LOWinstall.sh9# Usage:COMMENT