n³ The unorthodox terminal file manager
This report summarizes scanner evidence for jarun/nnn, a C project with 22,059 GitHub stars. SynthScan examined 18,918 lines of code across 35 source files, recording 227 pattern matches distributed across 6 syntactic categories. The legacy adjusted pattern signal is 7.8 (Moderate 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.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 227 finding(s).
Are imports declared and package/API names verified? 0 finding(s).
Are wrappers, guards, and repeated structures necessary? 2 finding(s).
Which changes need focused human review? 227 finding(s).
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.
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.
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.
The scanner identified 227 distinct pattern matches across 6 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.
| 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 <strings.h> | COMMENT |
| LOW | src/nnn.c | 121 | * GCC doesn't expand alloca() to __builtin_alloca() in standards mode | COMMENT |
| LOW | src/nnn.c | 141 | * leading to duplicated first characters in filenames when navigating. | COMMENT |
| LOW | src/nnn.c | 161 | COMMENT | |
| LOW | src/nnn.c | 181 | #define MIN(x, y) ((x) < (y) ? (x) : (y)) | COMMENT |
| LOW | src/nnn.c | 201 | #define NEWLINE "\n" | COMMENT |
| LOW | src/nnn.c | 221 | #define CREATE_NEW_KEY (-1) | COMMENT |
| LOW | src/nnn.c | 241 | #endif | COMMENT |
| LOW | src/nnn.c | 261 | #define FILE_SELECTED 0x10 | COMMENT |
| LOW | src/nnn.c | 581 | /* Buffer to store plugins control pipe location */ | COMMENT |
| LOW | src/nnn.c | 601 | #define UTIL_LAUNCH 6 | COMMENT |
| LOW | src/nnn.c | 661 | COMMENT | |
| LOW | src/nnn.c | 681 | #define MSG_OPEN_WITH 18 | COMMENT |
| LOW | src/nnn.c | 761 | #define NNN_OPENER 3 | COMMENT |
| LOW | src/nnn.c | 801 | "PAGER", | COMMENT |
| LOW | src/nnn.c | 861 | #define C_DIR (C_CHR + 1) /* Directory: DeepSkyBlue1 */ | COMMENT |
| LOW | src/nnn.c | 901 | #define settimeout() timeout(1000) | 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 |
| LOW | src/icons-in-terminal.h | 541 | # define FA_XING_SQUARE "\ue228" | COMMENT |
| 161 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 | 5972 | // TODO: Find a more robust solution. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | misc/test/test-quitcd-fish.py | 68 | def test_missing_directory_does_not_change_directory(self): | CODE |
| LOW | misc/test/test-quitcd-fish.py | 74 | def test_no_lastd_does_not_change_directory(self): | CODE |
| 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 |