Lean 4 programming language and theorem prover
This report summarizes scanner evidence for leanprover/lean4, a Lean project with 9,799 GitHub stars. SynthScan examined 7,656,228 lines of code across 4622 source files, recording 2840 pattern matches distributed across 18 syntactic categories. The legacy adjusted pattern signal is 0.4 (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.
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.
Can maintainers explain intent, assumptions, and trade-offs? 2739 finding(s).
Are imports declared and package/API names verified? 24 finding(s).
Are wrappers, guards, and repeated structures necessary? 112 finding(s).
Which changes need focused human review? 2840 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 2840 distinct pattern matches across 18 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 | stage0/stdlib/Lean.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/LeanExport.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Std.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/LeanChecker.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/LeanIR.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/LakeMain.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Lake.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/While.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/TacticsExtra.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/LawfulBEqTactics.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/NotationExtra.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/Hints.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/GrindInstances.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/ByCases.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/ShareCommon.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/CbvSimproc.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/Util.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/Simproc.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/WFExtrinsicFix.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/Ext.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/System.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/Meta.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/PropLemmas.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/LetFun.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/Coe.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/Prelude.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/RCases.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/Omega.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/Grind.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/Conv.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/Try.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/MetaTypes.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/Control.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/Task.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/Core.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/Internal.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/GetElem.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/Sym.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/SizeOfLemmas.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/BinderNameHint.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/WFTactics.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/MacroTrace.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/BinderPredicates.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/WF.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/Syntax.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/SizeOf.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/Guard.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/SimpLemmas.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/Data.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/Classical.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/WFComputable.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/MethodSpecsSimp.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/Dynamic.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/Sym/Lemmas.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/Sym/Simp/SimprocDSL.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/Sym/DSimp/DSimprocDSL.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/GrindInstances/Nat.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/GrindInstances/Ring.c | 1 | // Lean compiler output | COMMENT |
| LOW | stage0/stdlib/Init/GrindInstances/Ring/UInt.c | 1 | // Lean compiler output | COMMENT |
| 2585 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/trace_timings.py | 59 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/trace_timings.py | 61 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/trace_timings.py | 99 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/trace_timings.py | 101 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/trace_timings.py | 234 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/trace_timings.py | 236 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/elab/unicode/CaseFolding.txt | 31 | # ================================================================================ | COMMENT |
| MEDIUM | tests/elab/unicode/CaseFolding.txt | 33 | # ================================================================================ | COMMENT |
| MEDIUM | tests/elab/unicode/CaseFolding.txt | 55 | # ================================================================= | COMMENT |
| MEDIUM | tests/elab/unicode/CaseFolding.txt | 62 | # ================================================================= | COMMENT |
| MEDIUM⚡ | tests/elab/unicode/DerivedGeneralCategory.txt | 3563 | # ================================================ | COMMENT |
| MEDIUM⚡ | tests/elab/unicode/DerivedGeneralCategory.txt | 3571 | # ================================================ | COMMENT |
| MEDIUM⚡ | tests/elab/unicode/DerivedGeneralCategory.txt | 3579 | # ================================================ | COMMENT |
| MEDIUM⚡ | tests/elab/unicode/DerivedGeneralCategory.txt | 3588 | # ================================================ | COMMENT |
| MEDIUM⚡ | tests/elab/unicode/DerivedGeneralCategory.txt | 3616 | # ================================================ | COMMENT |
| MEDIUM⚡ | tests/elab/unicode/DerivedGeneralCategory.txt | 3626 | # ================================================ | COMMENT |
| MEDIUM⚡ | tests/elab/unicode/DerivedGeneralCategory.txt | 3634 | # ================================================ | COMMENT |
| MEDIUM | tests/elab/unicode/DerivedGeneralCategory.txt | 10 | # ================================================ | COMMENT |
| MEDIUM | tests/elab/unicode/DerivedGeneralCategory.txt | 14 | # ================================================ | COMMENT |
| MEDIUM | tests/elab/unicode/DerivedGeneralCategory.txt | 756 | # ================================================ | COMMENT |
| MEDIUM | tests/elab/unicode/DerivedGeneralCategory.txt | 1436 | # ================================================ | COMMENT |
| MEDIUM | tests/elab/unicode/DerivedGeneralCategory.txt | 2123 | # ================================================ | COMMENT |
| MEDIUM | tests/elab/unicode/DerivedGeneralCategory.txt | 2140 | # ================================================ | COMMENT |
| MEDIUM | tests/elab/unicode/DerivedGeneralCategory.txt | 2228 | # ================================================ | COMMENT |
| MEDIUM | tests/elab/unicode/DerivedGeneralCategory.txt | 2779 | # ================================================ | COMMENT |
| MEDIUM | tests/elab/unicode/DerivedGeneralCategory.txt | 3154 | # ================================================ | COMMENT |
| MEDIUM | tests/elab/unicode/DerivedGeneralCategory.txt | 3166 | # ================================================ | COMMENT |
| MEDIUM | tests/elab/unicode/DerivedGeneralCategory.txt | 3369 | # ================================================ | COMMENT |
| MEDIUM | tests/elab/unicode/DerivedGeneralCategory.txt | 3448 | # ================================================ | COMMENT |
| MEDIUM | tests/elab/unicode/DerivedGeneralCategory.txt | 3470 | # ================================================ | COMMENT |
| MEDIUM | tests/elab/unicode/DerivedGeneralCategory.txt | 3549 | # ================================================ | COMMENT |
| MEDIUM | tests/elab/unicode/DerivedGeneralCategory.txt | 3661 | # ================================================ | COMMENT |
| MEDIUM | tests/elab/unicode/DerivedGeneralCategory.txt | 3748 | # ================================================ | COMMENT |
| MEDIUM | tests/elab/unicode/DerivedGeneralCategory.txt | 3832 | # ================================================ | COMMENT |
| MEDIUM | tests/elab/unicode/DerivedGeneralCategory.txt | 3845 | # ================================================ | COMMENT |
| MEDIUM | tests/elab/unicode/DerivedGeneralCategory.txt | 4047 | # ================================================ | COMMENT |
| MEDIUM | tests/elab/unicode/DerivedGeneralCategory.txt | 4123 | # ================================================ | COMMENT |
| MEDIUM | tests/elab/unicode/DerivedGeneralCategory.txt | 4151 | # ================================================ | COMMENT |
| MEDIUM | tests/elab/unicode/DerivedGeneralCategory.txt | 4190 | # ================================================ | COMMENT |
| MEDIUM | tests/elab/unicode/DerivedGeneralCategory.txt | 4391 | # ================================================ | COMMENT |
| MEDIUM | tests/elab/unicode/DerivedGeneralCategory.txt | 4409 | # ================================================ | COMMENT |
| MEDIUM | tests/lake/tests/ltar/test.sh | 9 | #------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/lake/tests/ltar/test.sh | 11 | #------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .claude/skills/zulip-extract/zulip_thread_extract.py | 17 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .claude/skills/zulip-extract/zulip_thread_extract.py | 19 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .claude/skills/zulip-extract/zulip_thread_extract.py | 111 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .claude/skills/zulip-extract/zulip_thread_extract.py | 113 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .claude/skills/zulip-extract/zulip_thread_extract.py | 212 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .claude/skills/zulip-extract/zulip_thread_extract.py | 214 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | script/build_artifact.py | 71 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | script/build_artifact.py | 73 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | script/build_artifact.py | 91 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | script/build_artifact.py | 93 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | script/build_artifact.py | 152 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | script/build_artifact.py | 154 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | script/build_artifact.py | 311 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | script/build_artifact.py | 313 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | script/build_artifact.py | 353 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | script/build_artifact.py | 355 | # ----------------------------------------------------------------------------- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | script/release/checklist.py | 73 | self.lrepo.push(head) | CODE |
| HIGH | script/release/checklist.py | 385 | self.lrepo.push(branch_name) | CODE |
| HIGH | script/release/checklist.py | 409 | self.lrepo.push(tag_name, upstream=False) | CODE |
| HIGH | script/release/checklist.py | 446 | self.lrepo.push(tag_name, upstream=False) | CODE |
| HIGH | script/release/checklist.py | 471 | self.lrepo.push(tag_name, upstream=False) | CODE |
| HIGH | script/release/checklist.py | 521 | self.lrepo.push("stable", force=True) | CODE |
| HIGH | script/release/checklist.py | 616 | self.lrepo.push(branch_name) | CODE |
| HIGH | script/release/checklist.py | 643 | self.lrepo.push(branch_name) | CODE |
| HIGH | script/release/checklist.py | 718 | self.lrepo.push(tag_name, upstream=False) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | stage0/src/runtime/process.cpp | 276 | // Passing `program` here should be more robust, but would require adding a `.exe` extension | COMMENT |
| MEDIUM | stage0/src/runtime/io.cpp | 1065 | // TODO(Leo): more robust solution | COMMENT |
| MEDIUM | stage0/src/runtime/io.cpp | 1423 | // TODO(Leo): more robust solution | COMMENT |
| MEDIUM | stage0/src/runtime/mpn.cpp | 53 | // Essentially Knuth's Algorithm A | COMMENT |
| MEDIUM | stage0/src/runtime/mpn.cpp | 75 | // Essentially Knuth's Algorithm S | COMMENT |
| MEDIUM | stage0/src/runtime/mpn.cpp | 92 | // Essentially Knuth's Algorithm M. | COMMENT |
| LOW | script/release/util.py | 393 | # Stable versions are prefixes of RC versions, so we can't just use "in" | COMMENT |
| LOW | .github/workflows/check-prelude.yml | 12 | # the default is to use a virtual merge commit between the PR and master: just use the PR | COMMENT |
| LOW | .github/workflows/build-template.yml | 64 | # the default is to use a virtual merge commit between the PR and master: just use the PR | COMMENT |
| MEDIUM | src/runtime/process.cpp | 276 | // Passing `program` here should be more robust, but would require adding a `.exe` extension | COMMENT |
| MEDIUM | src/runtime/io.cpp | 1065 | // TODO(Leo): more robust solution | COMMENT |
| MEDIUM | src/runtime/io.cpp | 1423 | // TODO(Leo): more robust solution | COMMENT |
| MEDIUM | src/runtime/mpn.cpp | 53 | // Essentially Knuth's Algorithm A | COMMENT |
| MEDIUM | src/runtime/mpn.cpp | 75 | // Essentially Knuth's Algorithm S | COMMENT |
| MEDIUM | src/runtime/mpn.cpp | 92 | // Essentially Knuth's Algorithm M. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/trace_timings.py | 342 | except OSError: | CODE |
| HIGH | script/build_artifact.py | 116 | except (FileNotFoundError, subprocess.TimeoutExpired): | CODE |
| HIGH | script/release/checklist.py | 372 | except UnknownObjectException: | CODE |
| HIGH | script/release/checklist.py | 396 | except UnknownObjectException: | CODE |
| HIGH | script/release/checklist.py | 427 | except UnknownObjectException: | CODE |
| HIGH | script/release/checklist.py | 571 | except UnknownObjectException: | CODE |
| HIGH | script/release/checklist.py | 605 | except UnknownObjectException: | CODE |
| HIGH | script/release/checklist.py | 705 | except UnknownObjectException: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/repeatedly.py | 45 | def read_measurements_from_outfile(outfile: Path) -> list[Measurement]: | CODE |
| LOW | tests/repeatedly.py | 53 | def write_measurements_to_outfile( | CODE |
| LOW⚡ | script/release/checklist.py | 584 | def check_backport_label_exists(self, version: Version) -> None: | CODE |
| LOW⚡ | script/release/checklist.py | 590 | def check_blocking_label_exists(self, version: Version) -> None: | CODE |
| LOW⚡ | script/release/checklist.py | 597 | def check_release_branch_exists(self) -> None: | CODE |
| LOW⚡ | script/release/checklist.py | 672 | def _check_no_open_prs_labeled(self, label: str) -> None: | CODE |
| LOW⚡ | script/release/checklist.py | 681 | def check_no_open_prs_labeled_backport(self) -> None: | CODE |
| LOW⚡ | script/release/checklist.py | 684 | def check_no_open_prs_labeled_blocking(self) -> None: | CODE |
| LOW⚡ | script/release/checklist.py | 687 | def check_no_open_backport_prs(self) -> None: | CODE |
| LOW | script/release/checklist.py | 88 | def check_dependencies_completed(self) -> None: | CODE |
| LOW | script/release/checklist.py | 191 | def _bump_toolchain_verso_templates(self) -> None: | CODE |
| LOW | script/release/checklist.py | 194 | def _bump_toolchain_reference_manual(self) -> None: | CODE |
| LOW | script/release/checklist.py | 226 | def _bump_toolchain_lean_fro_org(self) -> None: | CODE |
| LOW | script/release/checklist.py | 231 | def _bump_toolchain_bibtex_query(self) -> None: | CODE |
| LOW | script/release/checklist.py | 246 | def _bump_toolchain_leansqlite(self) -> None: | CODE |
| LOW | script/release/checklist.py | 254 | def _bump_toolchain_in_worktree(self) -> None: | CODE |
| LOW | script/release/checklist.py | 279 | def _bump_toolchain_unicode_basic(self) -> None: | CODE |
| LOW | script/release/checklist.py | 452 | def _check_proofwidgets_release_tag(self) -> GitRef | None: | CODE |
| LOW | script/release/checklist.py | 486 | def check_stable_branch_points_to_release_tag(self, tag: GitRef) -> None: | CODE |
| LOW | script/release/checklist.py | 621 | def check_release_branch_cmake_version(self) -> None: | CODE |
| LOW | script/release/checklist.py | 646 | def check_master_branch_cmake_version(self) -> None: | CODE |
| LOW | script/release/checklist.py | 838 | def check_release_notes_updated(self) -> None: | CODE |
| LOW | script/release/release_notes.py | 75 | def get_previously_released_prs(refman: Path, version: Version) -> set[int]: | CODE |
| LOW | script/release/release_notes.py | 85 | def get_description_from_body(body: str) -> str: | CODE |
| LOW⚡ | script/release/util.py | 470 | def get_release_notes_stem_for(version: Version) -> str: | CODE |
| LOW⚡ | script/release/util.py | 474 | def get_release_notes_path_for(version: Version) -> str: | CODE |
| LOW⚡ | script/release/util.py | 478 | def get_release_notes_module_for(version: Version) -> str: | CODE |
| LOW⚡ | script/release/util.py | 482 | def get_release_notes_index_path() -> str: | CODE |
| LOW⚡ | script/release/util.py | 486 | def get_release_notes_title_for(version: Version, release: GitRelease) -> str: | CODE |
| LOW⚡ | script/release/util.py | 535 | def get_toolchain_bump_message(version: Version) -> str: | CODE |
| LOW⚡ | script/release/util.py | 541 | def find_merged_toolchain_bump_sha(lrepo: LocalRepo, version: Version) -> str: | CODE |
| LOW | script/release/util.py | 563 | def get_proofwidgets_release_for(grepo: Repository, version: Version) -> Tag | None: | CODE |
| LOW | script/release/util.py | 573 | def get_next_proofwidgets_release(grepo: Repository) -> str: | CODE |
| LOW | script/release/util.py | 586 | def get_lean_unicode_basic_release_for( | CODE |
| LOW | doc/examples/IJCAR2026/analyze_grind_loc.py | 155 | def find_grind_introduction_commit(repo: str, file_path: str, decl_name: str) -> str | None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/lake/tests/init/online-test.sh | 21 | echo "# Check if elan exists" | CODE |
| LOW | tests/lake/tests/llvm-bitcode-gen/test.sh | 9 | echo "# Check if LLVM enabled" | CODE |
| LOW | tests/lake/tests/toolchain/test.sh | 7 | echo "# Check if elan exists" | CODE |
| LOW | script/build_artifact.py | 226 | # Check if the desired artifact exists for this run | COMMENT |
| LOW | script/rebase-stage0.sh | 13 | # Check if an argument is provided | COMMENT |
| LOW | .github/workflows/grove.yml | 31 | # Check if it's a push to master (no PR number and target branch is master) | COMMENT |
| LOW | .github/workflows/grove.yml | 41 | # Check if it's a PR with grove label | COMMENT |
| LOW⚡ | doc/examples/IJCAR2026/analyze_grind_loc.py | 208 | # Check if this declaration existed before this commit (without grind) | COMMENT |
| LOW⚡ | doc/examples/IJCAR2026/analyze_grind_loc.py | 214 | # Check if declaration existed in parent | COMMENT |
| LOW⚡ | doc/examples/IJCAR2026/analyze_grind_loc.py | 220 | # Check if declaration existed and didn't have grind | COMMENT |
| LOW⚡ | doc/examples/IJCAR2026/analyze_grind_loc.py | 224 | # Check if it already had grind in parent | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | stage0/src/bin/lean-gdb.py | 79 | CODE | |
| LOW | tests/measure.py | 65 | CODE | |
| LOW | tests/combine.py | 35 | CODE | |
| LOW | tests/trace_timings.py | 102 | CODE | |
| LOW | tests/trace_timings.py | 138 | CODE | |
| LOW | tests/lint.py | 36 | CODE | |
| LOW | tests/lake/tests/cacheTransfer/server.py | 222 | CODE | |
| LOW | tests/lake/tests/cacheTransfer/server.py | 235 | CODE | |
| LOW | tests/lake/tests/cacheTransfer/server.py | 248 | CODE | |
| LOW | .claude/skills/zulip-extract/zulip_thread_extract.py | 216 | CODE | |
| LOW | script/build_artifact.py | 189 | CODE | |
| LOW | script/gen_constants_cpp.py | 27 | CODE | |
| LOW | script/release/checklist.py | 254 | CODE | |
| LOW | script/release/release_notes.py | 147 | CODE | |
| LOW | script/release/release_notes.py | 237 | CODE | |
| LOW | doc/examples/IJCAR2026/analyze_grind_loc.py | 155 | CODE | |
| LOW | src/bin/lean-gdb.py | 79 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | stage0/stdlib/Lake/CLI/Init.c | 193 | static const lean_string_object l___private_Lake_CLI_Init_0__Lake_mathUpdateActionWorkflowContents___closed__0_value = { | CODE |
| MEDIUM | tests/lake/tests/cache/test.sh | 100 | # Create a test module that can be arbitrarily edited and cached | COMMENT |
| MEDIUM | tests/lake/tests/ltarStable/test.sh | 14 | # Create a Git-ignored `Test/A.lean` to edit later | COMMENT |
| MEDIUM | tests/compile_bench/incr_header_load.lean.before.sh | 2 | # Create the snapshot the bench reads. Runs outside the measured binary so the | COMMENT |
| MEDIUM | tests/pkg/signal/run_test.sh | 4 | # Create a named pipe for communication | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/lake/tests/init/online-test.sh | 10 | # WARNING: This test of the `math` template will fail unless Mathlib and Lean | COMMENT |
| LOW | .claude/skills/release-highlights/SKILL.md | 29 | ### Step 1: Gather context | COMMENT |
| LOW | .claude/skills/release-highlights/SKILL.md | 41 | ### Step 2: Select highlights | COMMENT |
| LOW | .claude/skills/release-highlights/SKILL.md | 91 | ### Step 3: Write the highlights | COMMENT |
| LOW | .claude/skills/release-highlights/SKILL.md | 159 | ### Step 4: Library highlights | COMMENT |
| LOW | .claude/skills/release-highlights/SKILL.md | 168 | ### Step 5: Review | COMMENT |
| LOW | .claude/skills/release-highlights/SKILL.md | 179 | ### Step 6: Post-processing — Link to the reference manual | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | .github/workflows/adaptation-pr.yml | 34 | const shortSha = context.payload.pull_request.head.sha.substring(0, 7); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/markdown_conformance/spec.txt | 9492 | "Lorem ipsum dolor\nsit amet." | CODE |
| LOW | tests/markdown_conformance/spec.txt | 9551 | > Lorem ipsum dolor | CODE |
| LOW | tests/markdown_conformance/spec.txt | 9566 | > Lorem ipsum dolor | CODE |
| LOW | tests/markdown_conformance/spec.txt | 9578 | "Lorem ipsum dolor" | CODE |
| LOW | tests/markdown_conformance/spec.txt | 9594 | "Lorem ipsum dolor\nsit amet." | CODE |
| LOW | tests/markdown_conformance/spec.txt | 9612 | "Lorem ipsum dolor\nsit amet." | CODE |
| LOW | tests/markdown_conformance/spec.txt | 9634 | "Lorem ipsum dolor\nsit amet." | CODE |
| LOW | tests/markdown_conformance/spec.txt | 9657 | str "Lorem ipsum dolor" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | script/gen_tokens_cpp.py | 19 | print("Error: %s" % msg) | CODE |
| MEDIUM | script/gen_constants_cpp.py | 19 | print("Error: %s" % msg) | CODE |
| LOW | script/release/util.py | 256 | except Exception: # noqa: BLE001 | CODE |
| LOW | script/release/util.py | 319 | except Exception: # noqa: BLE001 | CODE |
| MEDIUM | script/release/util.py | 314 | def get_github_instance() -> Github: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/bench/report.py | 5 | CODE | |
| LOW | tests/bench/report.py | 6 | CODE | |
| LOW | tests/bench/report.py | 10 | CODE | |
| LOW | tests/bench/report.py | 12 | CODE | |
| LOW | doc/examples/IJCAR2026/analyze_grind_loc.py | 15 | CODE | |
| LOW | doc/examples/IJCAR2026/analyze_grind_loc.py | 18 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/lake/tests/toml/tests/valid/spec/table-9.toml | 8 | [fruit.apple.texture] # you can add sub-tables | CODE |
| MEDIUM | tests/lake/tests/toml/tests/invalid/spec/table-9-1.toml | 8 | [fruit.apple.texture] # you can add sub-tables | CODE |
| MEDIUM | tests/lake/tests/toml/tests/invalid/spec/table-9-0.toml | 8 | [fruit.apple.texture] # you can add sub-tables | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | script/gen_constants_cpp.py | 95 | CODE | |
| MEDIUM | script/gen_constants_cpp.py | 103 | CODE | |
| MEDIUM | script/gen_constants_cpp.py | 104 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | script/release/util.py | 455 | def set_cmake_version(lrepo: LocalRepo, version: CMakeVersion) -> None: | CODE |
| LOW⚡ | script/release/util.py | 525 | def set_toolchain(path: Path, tag: str) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | script/refresh-cmake-deps.sh | 15 | # Usage: | COMMENT |