# Behavior traces — eslint/eslint

> Canonical page: https://codevetter.com/unpack/eslint/behavior-traces

# Behavior traces — eslint/eslint

Scanned commit bc51eee6e3e816622b2dd1bc08acb9cfb2d3a6a7 (2026-10-02). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

The traced flows include startup, physical-file linting, stdin analysis, automatic fixing, cache reuse, and suppression persistence. Their execution order separates analysis from source writes. Configuration selection occurs before verification, and CLI suppressions occur after optional fix writes. These are source-derived walkthroughs, not observed executions.
- Startup: enableCompileCache() and optional debug initialization → main() installs fatal handlers → optional readStdin() → cli.execute() → process.exitCode assignment unless a fatal handler already set status 2. — [bin/eslint.js#L12-20](https://github.com/eslint/eslint/blob/bc51eee6e3e816622b2dd1bc08acb9cfb2d3a6a7/bin/eslint.js#L12-L20) [bin/eslint.js#L164-194](https://github.com/eslint/eslint/blob/bc51eee6e3e816622b2dd1bc08acb9cfb2d3a6a7/bin/eslint.js#L164-L194) [bin/eslint.js#L196-211](https://github.com/eslint/eslint/blob/bc51eee6e3e816622b2dd1bc08acb9cfb2d3a6a7/bin/eslint.js#L196-L211)
- File action: cli.execute() constructs ESLint directly or through fromOptionsModule() → lintFiles() → findFiles() → selected single-thread/worker path → cache reconcile() → report processing. — [lib/cli.js#L369-387](https://github.com/eslint/eslint/blob/bc51eee6e3e816622b2dd1bc08acb9cfb2d3a6a7/lib/cli.js#L369-L387) [lib/eslint/eslint.js#L1024-1031](https://github.com/eslint/eslint/blob/bc51eee6e3e816622b2dd1bc08acb9cfb2d3a6a7/lib/eslint/eslint.js#L1024-L1031) [lib/eslint/eslint.js#L1041-1082](https://github.com/eslint/eslint/blob/bc51eee6e3e816622b2dd1bc08acb9cfb2d3a6a7/lib/eslint/eslint.js#L1041-L1082)
- Single-thread verification: lintFilesWithoutMultithreading() retrieves cached configs → lintFile() checks matching config/cache → readAndVerifyFile() reads UTF-8 → verifyText() → Linter.verifyAndFix(). — [lib/eslint/eslint.js#L624-647](https://github.com/eslint/eslint/blob/bc51eee6e3e816622b2dd1bc08acb9cfb2d3a6a7/lib/eslint/eslint.js#L624-L647) [lib/eslint/eslint-helpers.js#L1242-1276](https://github.com/eslint/eslint/blob/bc51eee6e3e816622b2dd1bc08acb9cfb2d3a6a7/lib/eslint/eslint-helpers.js#L1242-L1276) [lib/eslint/eslint-helpers.js#L1282-1309](https://github.com/eslint/eslint/blob/bc51eee6e3e816622b2dd1bc08acb9cfb2d3a6a7/lib/eslint/eslint-helpers.js#L1282-L1309) [lib/eslint/eslint-helpers.js#L1153-1170](https://github.com/eslint/eslint/blob/bc51eee6e3e816622b2dd1bc08acb9cfb2d3a6a7/lib/eslint/eslint-helpers.js#L1153-L1170)
- Rule execution: verify() normalizes flat config → _verifyWithFlatConfigArray() selects a matching config → processor or no-processor branch → ParserService.parseSync() → runRules() → applyDisableDirectives(). — [lib/linter/linter.js#L862-900](https://github.com/eslint/eslint/blob/bc51eee6e3e816622b2dd1bc08acb9cfb2d3a6a7/lib/linter/linter.js#L862-L900) [lib/linter/linter.js#L1406-1453](https://github.com/eslint/eslint/blob/bc51eee6e3e816622b2dd1bc08acb9cfb2d3a6a7/lib/linter/linter.js#L1406-L1453) [lib/linter/linter.js#L1012-1038](https://github.com/eslint/eslint/blob/bc51eee6e3e816622b2dd1bc08acb9cfb2d3a6a7/lib/linter/linter.js#L1012-L1038) [lib/linter/linter.js#L1294-1347](https://github.com/eslint/eslint/blob/bc51eee6e3e816622b2dd1bc08acb9cfb2d3a6a7/lib/linter/linter.js#L1294-L1347)
- Stdin action: readStdin() accumulates UTF-8 → cli.execute() detects string input → lintText() resolves configuration by virtual filename → verifyText() generates results → printResults(); --fix is rejected for this branch. — [bin/eslint.js#L47-61](https://github.com/eslint/eslint/blob/bc51eee6e3e816622b2dd1bc08acb9cfb2d3a6a7/bin/eslint.js#L47-L61) [lib/cli.js#L295-299](https://github.com/eslint/eslint/blob/bc51eee6e3e816622b2dd1bc08acb9cfb2d3a6a7/lib/cli.js#L295-L299) [lib/cli.js#L381-384](https://github.com/eslint/eslint/blob/bc51eee6e3e816622b2dd1bc08acb9cfb2d3a6a7/lib/cli.js#L381-L384) [lib/eslint/eslint.js#L1159-1198](https://github.com/eslint/eslint/blob/bc51eee6e3e816622b2dd1bc08acb9cfb2d3a6a7/lib/eslint/eslint.js#L1159-L1198)
- Fix action: verifyAndFix() repeats verify() → SourceCodeFixer.applyFixes(), stops on no fixes, bounded passes, fatal parse failure, or a two-state cycle, then re-verifies final changed text; CLI --fix subsequently calls outputFixes(). — [lib/linter/linter.js#L1547-1586](https://github.com/eslint/eslint/blob/bc51eee6e3e816622b2dd1bc08acb9cfb2d3a6a7/lib/linter/linter.js#L1547-L1586) [lib/linter/linter.js#L1603-1637](https://github.com/eslint/eslint/blob/bc51eee6e3e816622b2dd1bc08acb9cfb2d3a6a7/lib/linter/linter.js#L1603-L1637) [lib/linter/linter.js#L1639-1662](https://github.com/eslint/eslint/blob/bc51eee6e3e816622b2dd1bc08acb9cfb2d3a6a7/lib/linter/linter.js#L1639-L1662) [lib/cli.js#L389-392](https://github.com/eslint/eslint/blob/bc51eee6e3e816622b2dd1bc08acb9cfb2d3a6a7/lib/cli.js#L389-L392)
- Cache persistence: getCachedLintResults() checks file/config validity and hydrates source; cached diagnostics are reprocessed when fixing; setCachedLintResults() skips results with output; lintFiles() calls reconcile() to persist entries. — [lib/cli-engine/lint-result-cache.js#L125-149](https://github.com/eslint/eslint/blob/bc51eee6e3e816622b2dd1bc08acb9cfb2d3a6a7/lib/cli-engine/lint-result-cache.js#L125-L149) [lib/eslint/eslint-helpers.js#L1252-1271](https://github.com/eslint/eslint/blob/bc51eee6e3e816622b2dd1bc08acb9cfb2d3a6a7/lib/eslint/eslint-helpers.js#L1252-L1271) [lib/cli-engine/lint-result-cache.js#L205-235](https://github.com/eslint/eslint/blob/bc51eee6e3e816622b2dd1bc08acb9cfb2d3a6a7/lib/cli-engine/lint-result-cache.js#L205-L235) [lib/eslint/eslint.js#L1074-1077](https://github.com/eslint/eslint/blob/bc51eee6e3e816622b2dd1bc08acb9cfb2d3a6a7/lib/eslint/eslint.js#L1074-L1077)
- Suppression persistence: after linting and optional outputFixes(), CLI constructs SuppressionsService → suppress()/prune() → load()/save() → applySuppressions() → counts/formatting → status 2 for unused allowances unless explicitly permitted. — [lib/cli.js#L389-443](https://github.com/eslint/eslint/blob/bc51eee6e3e816622b2dd1bc08acb9cfb2d3a6a7/lib/cli.js#L389-L443) [lib/services/suppressions-service.js#L57-77](https://github.com/eslint/eslint/blob/bc51eee6e3e816622b2dd1bc08acb9cfb2d3a6a7/lib/services/suppressions-service.js#L57-L77) [lib/services/suppressions-service.js#L215-243](https://github.com/eslint/eslint/blob/bc51eee6e3e816622b2dd1bc08acb9cfb2d3a6a7/lib/services/suppressions-service.js#L215-L243) [lib/cli.js#L497-508](https://github.com/eslint/eslint/blob/bc51eee6e3e816622b2dd1bc08acb9cfb2d3a6a7/lib/cli.js#L497-L508)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
