n³ The unorthodox terminal file manager
This report presents the forensic synthetic code analysis of jarun/nnn, a C project with 21,706 GitHub stars. SynthScan v2.0 examined 18,132 lines of code across 33 source files, recording 226 pattern matches distributed across 5 syntactic categories. The overall adjusted score of 8.1 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 226 distinct pattern matches across 5 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | misc/musl/musl-static-ubuntu.sh | 1 | #!/usr/bin/env sh | COMMENT |
| LOW | misc/test/nnn_runner.sh | 1 | #!/bin/sh | COMMENT |
| LOW | misc/test/nnn_runner.sh | 21 | # | COMMENT |
| LOW | misc/test/nnn_runner.sh | 41 | # Left Send arrow left (\033[D) | COMMENT |
| LOW | misc/test/verify-du.sh | 1 | #!/bin/sh | COMMENT |
| LOW | misc/test/test-76ee5803.sh | 1 | #!/bin/sh | COMMENT |
| LOW | misc/packagecore/packagecore.yaml | 101 | # - libreadline7 | COMMENT |
| LOW | src/icons.h | 21 | #define ICON_STR(I, N, E) N | COMMENT |
| LOW | src/icons.h | 41 | #define ICON_PADDING_LEFT "" | COMMENT |
| LOW | src/icons.h | 61 | #define ICON_CLOJURE ICON_STR(MFIZZ_CLOJURE, "", "") | COMMENT |
| LOW | src/icons.h | 81 | #define ICON_MANUAL ICON_STR(FILE_MANPAGE, "", "❓") | COMMENT |
| LOW | src/icons.h | 101 | #define ICON_TEX ICON_STR(FILE_TEX, "", ICON_DOCUMENT) | COMMENT |
| LOW | src/nnn.c | 41 | #endif | COMMENT |
| LOW | src/nnn.c | 61 | COMMENT | |
| LOW | src/nnn.c | 81 | #ifndef NOLC | COMMENT |
| LOW | src/nnn.c | 101 | #include <time.h> | COMMENT |
| LOW | src/nnn.c | 121 | * (-std=...) and not all standard libraries do or supply it, e.g. | COMMENT |
| LOW | src/nnn.c | 141 | * https://github.com/jarun/nnn/issues/1692 | COMMENT |
| LOW | src/nnn.c | 161 | #ifndef S_BLKSIZE | COMMENT |
| LOW | src/nnn.c | 181 | #undef MAX | COMMENT |
| LOW | src/nnn.c | 201 | #define NEWLINE_CHAR '\n' | COMMENT |
| LOW | src/nnn.c | 221 | #define SIZE_8KB (8 * 1024) /* 8 KB in bytes */ | COMMENT |
| LOW | src/nnn.c | 241 | /* Large selection threshold */ | COMMENT |
| LOW | src/nnn.c | 261 | #define FILE_YOUNG 0x40 | COMMENT |
| LOW | src/nnn.c | 581 | #elif !defined(__sun) /* no MIME option for 'file' */ | COMMENT |
| LOW | src/nnn.c | 601 | #define UTIL_NTFY 15 | COMMENT |
| LOW | src/nnn.c | 661 | #define MSG_CP_MV_AS 7 | COMMENT |
| LOW | src/nnn.c | 681 | #define MSG_NOT_SET 27 | COMMENT |
| LOW | src/nnn.c | 741 | "unchanged", | COMMENT |
| LOW | src/nnn.c | 801 | #define NSEC_MTIME(sb) ((uint_t)(sb).st_mtimespec.tv_nsec) | COMMENT |
| LOW | src/nnn.c | 841 | "'%s' | tr '\\n' '\\0' | xargs -0 -n2 sh -c '%s \"$0\" \"$@\" < /dev/tty'", | COMMENT |
| LOW | src/nnn.c | 881 | static bool haiku_nm_active = FALSE; | COMMENT |
| LOW | src/nnn.c | 901 | #define xerror() perror(xitoa(__LINE__)) | COMMENT |
| LOW | src/icons-in-terminal.h | 1 | #ifndef ICONS_IN_TERMINAL | COMMENT |
| LOW | src/icons-in-terminal.h | 21 | # define POWERLINE_EXTRA_FORWARDSLASH_SEPARATOR_REDUNDANT "\ue0bd" | COMMENT |
| LOW | src/icons-in-terminal.h | 41 | # define POWERLINE_EXTRA_TRAPEZOID_TOP_BOTTOM_MIRRORED "\ue0d4" | COMMENT |
| LOW | src/icons-in-terminal.h | 61 | # define OCT_FILE_PDF "\ue013" | COMMENT |
| LOW | src/icons-in-terminal.h | 81 | # define OCT_TOOLS "\ue027" | COMMENT |
| LOW | src/icons-in-terminal.h | 101 | # define OCT_CREDIT_CARD "\ue03b" | COMMENT |
| LOW | src/icons-in-terminal.h | 121 | # define OCT_PLUS "\ue04f" | COMMENT |
| LOW | src/icons-in-terminal.h | 141 | # define OCT_BOOKMARK "\ue063" | COMMENT |
| LOW | src/icons-in-terminal.h | 161 | # define OCT_ELLIPSIS "\ue077" | COMMENT |
| LOW | src/icons-in-terminal.h | 181 | # define OCT_TERMINAL "\ue08b" | COMMENT |
| LOW | src/icons-in-terminal.h | 201 | # define OCT_BOLD "\ue09f" | COMMENT |
| LOW | src/icons-in-terminal.h | 221 | # define FA_USER "\ue0e8" | COMMENT |
| LOW | src/icons-in-terminal.h | 241 | # define FA_INBOX "\ue0fc" | COMMENT |
| LOW | src/icons-in-terminal.h | 261 | # define FA_BOLD "\ue110" | COMMENT |
| LOW | src/icons-in-terminal.h | 281 | # define FA_ARROWS "\ue124" | COMMENT |
| LOW | src/icons-in-terminal.h | 301 | # define FA_TIMES_CIRCLE_O "\ue138" | COMMENT |
| LOW | src/icons-in-terminal.h | 321 | # define FA_PLANE "\ue14c" | COMMENT |
| LOW | src/icons-in-terminal.h | 341 | # define FA_THUMBS_O_UP "\ue160" | COMMENT |
| LOW | src/icons-in-terminal.h | 361 | # define FA_UNLOCK "\ue174" | COMMENT |
| LOW | src/icons-in-terminal.h | 381 | # define FA_ARROWS_ALT "\ue188" | COMMENT |
| LOW | src/icons-in-terminal.h | 401 | # define FA_GOOGLE_PLUS_SQUARE "\ue19c" | COMMENT |
| LOW | src/icons-in-terminal.h | 421 | # define FA_UMBRELLA "\ue1b0" | COMMENT |
| LOW | src/icons-in-terminal.h | 441 | # define FA_PLUS_SQUARE "\ue1c4" | COMMENT |
| LOW | src/icons-in-terminal.h | 461 | # define FA_FOLDER_O "\ue1d8" | COMMENT |
| LOW | src/icons-in-terminal.h | 481 | # define FA_INFO "\ue1ec" | COMMENT |
| LOW | src/icons-in-terminal.h | 501 | # define FA_UNLOCK_ALT "\ue200" | COMMENT |
| LOW | src/icons-in-terminal.h | 521 | # define FA_GBP "\ue214" | COMMENT |
| 162 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | misc/test/nnn_runner.sh | 305 | # Create a FIFO for feeding input to nnn | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/nnn.c | 5813 | // TODO: Find a more robust solution. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | misc/test/nnn_runner.sh | 11 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | misc/test/benchmark.sh | 5 | # Don't forget to build nnn in benchmark mode: make O_BENCH=1 | COMMENT |