# Behavior traces — biomejs/biome

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

# Behavior traces — biomejs/biome

Scanned commit 82f9b0e6ff4bdc4a99aa81b1b861934aa9cb9443 (2026-09-21). Generated by codevetter codevetter 1.12.0 on 2026-09-22.

Three load-bearing flows are process startup into the CLI dispatcher, a check/lint pass over a project, and configuration plus fix persistence. A fourth adjacent flow is LSP or daemon startup, which reuses WorkspaceServer instead of one-shot CLI traversal. Function names below are the ones present in the crates read for this brief.
- Startup: main in crates/biome_cli/src/main.rs reads BIOME_LOG_PATH, optionally initializes a log file, then calls biome_cli::run_server (or the pavilion entry used by the binary). Panic hook is installed before argument parsing. — [crates/biome_cli/src/main.rs#L1-L80](https://github.com/biomejs/biome/blob/82f9b0e6ff4bdc4a99aa81b1b861934aa9cb9443/crates/biome_cli/src/main.rs#L1-L80) [crates/biome_cli/src/lib.rs](https://github.com/biomejs/biome/blob/82f9b0e6ff4bdc4a99aa81b1b861934aa9cb9443/crates/biome_cli/src/lib.rs)
- Parse step inside a language handler: the file handler calls the language parser (for JS, parse_module or parse_script in biome_js_parser), producing a Parse result that carries both the CST and parse diagnostics. — [crates/biome_service/src/file_handlers/javascript.rs](https://github.com/biomejs/biome/blob/82f9b0e6ff4bdc4a99aa81b1b861934aa9cb9443/crates/biome_service/src/file_handlers/javascript.rs) [crates/biome_js_parser/src/parse.rs](https://github.com/biomejs/biome/blob/82f9b0e6ff4bdc4a99aa81b1b861934aa9cb9443/crates/biome_js_parser/src/parse.rs)
- Lint step: the analyzer pulls rules from the language registry (for example biome_js_analyze::rules), filters by configuration severity and nursery or recommended sets, then visits the tree. Matching rules call diagnose. — [crates/biome_analyze/src/registry.rs](https://github.com/biomejs/biome/blob/82f9b0e6ff4bdc4a99aa81b1b861934aa9cb9443/crates/biome_analyze/src/registry.rs) [crates/biome_js_analyze/src/lib.rs](https://github.com/biomejs/biome/blob/82f9b0e6ff4bdc4a99aa81b1b861934aa9cb9443/crates/biome_js_analyze/src/lib.rs) [crates/biome_service/src/file_handlers/javascript.rs](https://github.com/biomejs/biome/blob/82f9b0e6ff4bdc4a99aa81b1b861934aa9cb9443/crates/biome_service/src/file_handlers/javascript.rs)
- Format step: the language formatter builds a FormatElement IR from the CST and prints it with biome_formatter::Printed. If the printed text differs, a format diagnostic or write-back is produced. — [crates/biome_formatter/src/lib.rs](https://github.com/biomejs/biome/blob/82f9b0e6ff4bdc4a99aa81b1b861934aa9cb9443/crates/biome_formatter/src/lib.rs) [crates/biome_js_formatter/src/lib.rs](https://github.com/biomejs/biome/blob/82f9b0e6ff4bdc4a99aa81b1b861934aa9cb9443/crates/biome_js_formatter/src/lib.rs) [crates/biome_cli/src/commands/format.rs](https://github.com/biomejs/biome/blob/82f9b0e6ff4bdc4a99aa81b1b861934aa9cb9443/crates/biome_cli/src/commands/format.rs)
- Persistence of fixes: when --write or --fix is set, the workspace applies text edits and calls FileSystem::open or write. Without those flags the process only reports. Configuration itself is not rewritten except by biome init and biome migrate. — [crates/biome_cli/src/commands/check.rs](https://github.com/biomejs/biome/blob/82f9b0e6ff4bdc4a99aa81b1b861934aa9cb9443/crates/biome_cli/src/commands/check.rs) [crates/biome_fs/src/lib.rs](https://github.com/biomejs/biome/blob/82f9b0e6ff4bdc4a99aa81b1b861934aa9cb9443/crates/biome_fs/src/lib.rs) [crates/biome_cli/src/commands/migrate.rs](https://github.com/biomejs/biome/blob/82f9b0e6ff4bdc4a99aa81b1b861934aa9cb9443/crates/biome_cli/src/commands/migrate.rs)
- Init flow: biome init detects an existing config, prompts or writes biome.json with default formatter and linter sections, and can import from Prettier or ESLint when migrate is used instead. — [crates/biome_cli/src/commands/init.rs](https://github.com/biomejs/biome/blob/82f9b0e6ff4bdc4a99aa81b1b861934aa9cb9443/crates/biome_cli/src/commands/init.rs) [crates/biome_configuration/src/lib.rs](https://github.com/biomejs/biome/blob/82f9b0e6ff4bdc4a99aa81b1b861934aa9cb9443/crates/biome_configuration/src/lib.rs)
- Migrate flow: read the foreign config (eslint.config or .eslintrc, prettier), map rules through generated and hand-written converters, emit a Biome configuration and a report of unmapped rules. — [crates/biome_cli/src/commands/migrate.rs](https://github.com/biomejs/biome/blob/82f9b0e6ff4bdc4a99aa81b1b861934aa9cb9443/crates/biome_cli/src/commands/migrate.rs) [crates/biome_cli/src/execute/migrate](https://github.com/biomejs/biome/blob/82f9b0e6ff4bdc4a99aa81b1b861934aa9cb9443/crates/biome_cli/src/execute/migrate)

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)
