🐹 Keep your Mac and PC clean, light, and running like new. Fast open-source CLI, plus native Mac and Windows apps.
This report summarizes scanner evidence for tw93/Mole, a Shell project with 73,404 GitHub stars. SynthScan examined 103,087 lines of code across 240 source files, recording 224 pattern matches distributed across 13 syntactic categories. The legacy adjusted pattern signal is 4.0 (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? 145 finding(s).
Are imports declared and package/API names verified? 12 finding(s).
Are wrappers, guards, and repeated structures necessary? 77 finding(s).
Which changes need focused human review? 224 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 224 distinct pattern matches across 13 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 |
|---|---|---|---|---|
| MEDIUM | scripts/setup-quick-launchers.sh | 73 | # ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/setup-quick-launchers.sh | 75 | # ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | lib/core/base.sh | 1812 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | lib/core/base.sh | 1814 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/base.sh | 20 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/base.sh | 32 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/base.sh | 103 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/base.sh | 105 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/base.sh | 121 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/base.sh | 123 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/base.sh | 151 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/base.sh | 153 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/base.sh | 168 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/base.sh | 170 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/base.sh | 555 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/base.sh | 557 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/base.sh | 648 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/base.sh | 650 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/base.sh | 872 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/base.sh | 874 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/base.sh | 1050 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/base.sh | 1052 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/base.sh | 1255 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/base.sh | 1257 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/base.sh | 1650 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/base.sh | 1652 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/log.sh | 20 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/log.sh | 22 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/log.sh | 36 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/log.sh | 38 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/log.sh | 126 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/log.sh | 128 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/log.sh | 250 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/log.sh | 252 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/log.sh | 483 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/log.sh | 485 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/log.sh | 530 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/log.sh | 532 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/sudo.sh | 7 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/sudo.sh | 9 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/sudo.sh | 283 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/sudo.sh | 285 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/file_ops.sh | 84 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/file_ops.sh | 86 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/file_ops.sh | 113 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/file_ops.sh | 115 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/file_ops.sh | 1381 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/file_ops.sh | 1383 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/file_ops.sh | 2289 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/file_ops.sh | 2291 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/file_ops.sh | 3442 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/file_ops.sh | 3444 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/file_ops.sh | 4024 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/file_ops.sh | 4026 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/timeout.sh | 13 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/timeout.sh | 15 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/timeout.sh | 66 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/timeout.sh | 68 | # ============================================================================ | COMMENT |
| MEDIUM | lib/core/timeout.sh | 374 | # ======================================================================== | COMMENT |
| MEDIUM | lib/core/timeout.sh | 376 | # ======================================================================== | COMMENT |
| 4 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | bin/touchid.sh | 39 | # Check if Touch ID is already configured | COMMENT |
| LOW | bin/touchid.sh | 53 | # Check if system supports Touch ID | COMMENT |
| LOW | bin/touchid.sh | 55 | # Check if bioutil exists and has Touch ID capability | COMMENT |
| LOW | bin/touchid.sh | 116 | # Check if we should use sudo_local (Sonoma+) | COMMENT |
| LOW | bin/touchid.sh | 118 | # Check if already correctly configured in sudo_local | COMMENT |
| LOW | bin/touchid.sh | 134 | # Check if configured in sudo (Legacy) | COMMENT |
| LOW | bin/touchid.sh | 182 | # Check if already configured (Legacy) | COMMENT |
| LOW | bin/completion.sh | 244 | # Check if already installed and normalize to latest line | COMMENT |
| LOW | bin/slim.sh | 342 | # Set keys_file to the cached slim_sealed_keys output for a sealing root; | COMMENT |
| LOW⚡ | lib/core/base.sh | 1816 | # Check if terminal supports ANSI escape codes | COMMENT |
| LOW⚡ | lib/core/base.sh | 1824 | # Check if running in interactive terminal | COMMENT |
| LOW | lib/core/base.sh | 1793 | # Check if enough time has elapsed | COMMENT |
| LOW | lib/core/app_protection.sh | 64 | # Check if bundle ID matches pattern (glob support) | COMMENT |
| LOW | lib/core/app_protection.sh | 115 | # Check if application is a protected system component | COMMENT |
| LOW | lib/core/app_protection.sh | 171 | # Check if application data should be protected during cleanup | COMMENT |
| LOW | lib/core/app_protection.sh | 383 | # Check if a path is protected from deletion | COMMENT |
| LOW | lib/core/app_protection.sh | 666 | # Check if a path is protected by whitelist patterns | COMMENT |
| LOW | lib/core/app_protection.sh | 711 | # Check if target is a parent directory of a whitelisted path | COMMENT |
| LOW | lib/core/app_protection.sh | 718 | # Check if target is a child of a whitelisted directory path | COMMENT |
| LOW | lib/core/app_protection.sh | 2666 | # Check if process is running using exact match only | COMMENT |
| LOW | lib/core/ui.sh | 567 | # Check if terminal has Full Disk Access | COMMENT |
| LOW | lib/core/sudo.sh | 58 | # Check if lid is closed; ignore pipeline failures so set -e doesn't exit | COMMENT |
| LOW | lib/core/sudo.sh | 132 | # Check if already have sudo access | COMMENT |
| LOW | lib/core/sudo.sh | 183 | # Check if in clamshell mode - if yes, skip Touch ID entirely | COMMENT |
| LOW | lib/core/sudo.sh | 339 | # Check if sudo session is active | COMMENT |
| LOW | lib/core/sudo.sh | 405 | # Check if already established | COMMENT |
| LOW | lib/core/sudo.sh | 438 | # Check if already established | COMMENT |
| LOW | lib/core/file_ops.sh | 1365 | # Check if path is protected (keychains, system settings, etc) | COMMENT |
| LOW | lib/core/file_ops.sh | 1538 | # Check if path exists | COMMENT |
| LOW | lib/core/file_ops.sh | 1846 | # Check if it's a permission error | COMMENT |
| LOW | lib/core/timeout.sh | 397 | # Check if process still exists | COMMENT |
| LOW | lib/core/timeout.sh | 460 | # Check if command was killed by timeout (exit codes 143=SIGTERM, 137=SIGKILL) | COMMENT |
| LOW | lib/optimize/tasks.sh | 488 | # Check if database has any entries worth cleaning. | COMMENT |
| LOW | lib/optimize/tasks.sh | 1289 | # Check if periodic command exists (removed in macOS 26+) | COMMENT |
| LOW | lib/optimize/tasks.sh | 1799 | # Check if a login item name corresponds to an installed app. | COMMENT |
| LOW | lib/clean/project.sh | 39 | # Check if a directory contains projects (directly or in subdirectories). | COMMENT |
| LOW⚡ | lib/clean/project.sh | 459 | # Check if parent directory has a .csproj/.fsproj/.vbproj file | COMMENT |
| LOW⚡ | lib/clean/project.sh | 464 | # Check if bin directory contains Debug/ or Release/ subdirectories | COMMENT |
| LOW⚡ | lib/clean/project.sh | 470 | # Check if a vendor directory should be protected from purge | COMMENT |
| LOW | lib/clean/project.sh | 500 | # Check if an artifact should be protected from purge | COMMENT |
| LOW | lib/clean/project.sh | 848 | # Check if we should abort (scanning file removed by Ctrl+C) | COMMENT |
| LOW | lib/clean/brew.sh | 300 | # Check if Homebrew cache is whitelisted | COMMENT |
| LOW | lib/uninstall/brew.sh | 32 | # Check if Homebrew is installed and accessible | COMMENT |
| LOW | lib/uninstall/brew.sh | 285 | # Check if path is inside Caskroom. Quote literals so Homebrew bottle | COMMENT |
| LOW | lib/manage/purge_paths.sh | 66 | # Check if using custom config | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cmd/analyze/scanner.go | 121 | // that are easy to get wrong; see the per-field notes before adjusting. | COMMENT |
| LOW | cmd/analyze/delete.go | 21 | ) | COMMENT |
| LOW | cmd/analyze/cache.go | 21 | COMMENT | |
| LOW | cmd/analyze/cache.go | 361 | COMMENT | |
| LOW | cmd/analyze/constants.go | 41 | legacySweepWorkers = 4 | COMMENT |
| LOW | bin/uninstall.sh | 161 | # Display names depend on the ordered language list. Keep the fingerprint in | COMMENT |
| LOW | bin/clean.sh | 641 | COMMENT | |
| LOW | tests/color_tty_fixture.sh | 1 | #!/bin/bash | COMMENT |
| LOW | tests/timeout_tty_background_fixture.sh | 1 | #!/bin/bash | COMMENT |
| LOW | tests/helpers/common.bash | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | tests/helpers/common.bash | 41 | # it calls today instead of an extracted copy that silently falls back when | COMMENT |
| LOW | scripts/audit_bundle_drift.sh | 1 | #!/bin/bash | COMMENT |
| LOW | scripts/setup-quick-launchers.sh | 61 | #!/bin/bash | COMMENT |
| LOW | lib/core/base.sh | 21 | # Color Definitions | COMMENT |
| LOW | lib/core/base.sh | 201 | # moment a user saves one custom entry. Removing them breaks macOS search, | COMMENT |
| LOW | lib/core/base.sh | 561 | # so a test can rebind it to a fixture stub after sourcing. | COMMENT |
| LOW | lib/core/base.sh | 1381 | ( | COMMENT |
| LOW | lib/core/base.sh | 1661 | # fallback wording, dry-run export behavior). Before changing any of them, | COMMENT |
| LOW | lib/core/base.sh | 1861 | COMMENT | |
| LOW | lib/core/base.sh | 1881 | } | COMMENT |
| LOW | lib/core/app_protection.sh | 241 | COMMENT | |
| LOW | lib/core/app_protection.sh | 661 | fi | COMMENT |
| LOW | lib/core/app_protection.sh | 981 | # Return 0 when `path` looks like a dotdir / XDG state directory belonging to | COMMENT |
| LOW | lib/core/app_protection.sh | 1341 | ) | COMMENT |
| LOW | lib/core/app_protection.sh | 1761 | COMMENT | |
| LOW | lib/core/app_protection.sh | 1781 | { [[ "$app_name" =~ DevEco|deveco ]] || [[ "$bundle_id" =~ huawei.*deveco ]]; }; then | COMMENT |
| LOW | lib/core/app_protection.sh | 2601 | # A flat PlayCover bundle keeps its plist at the root; falling back to the | COMMENT |
| LOW | lib/core/ui.sh | 121 | COMMENT | |
| LOW | lib/core/timeouts.sh | 1 | #!/bin/bash | COMMENT |
| LOW | lib/core/timeouts.sh | 21 | # DISK_VERIFY Filesystem-level verify/repair operations. ~30s. | COMMENT |
| LOW | lib/core/timeouts.sh | 41 | # `find /private/var/folders -maxdepth 8` GPU-cache scan in | COMMENT |
| LOW | lib/core/app_protection_data.sh | 621 | ) | COMMENT |
| LOW | lib/core/file_ops.sh | 441 | # ProcessGuard.processListMentionsCacheOwner): | COMMENT |
| LOW | lib/core/file_ops.sh | 561 | id=$(run_with_timeout "$MOLE_TIMEOUT_QUICK_DETECT_SEC" \ | COMMENT |
| LOW | lib/core/file_ops.sh | 1221 | # match on the LITERAL path string, and the -L test above only inspects the | COMMENT |
| LOW | lib/core/file_ops.sh | 2381 | # MOLE_DELETE_MODE "permanent" (default) or "trash"; other values fail | COMMENT |
| LOW | lib/core/file_ops.sh | 3621 | COMMENT | |
| LOW | lib/core/file_ops.sh | 4021 | return "$delete_rc" | COMMENT |
| LOW | lib/core/timeout.sh | 1 | #!/bin/bash | COMMENT |
| LOW | lib/core/timeout.sh | 21 | # brew install coreutils | COMMENT |
| LOW | lib/core/timeout.sh | 141 | # Returns: | COMMENT |
| LOW | lib/core/timeout.sh | 181 | # No timeout if duration is invalid or zero. The regex already forbids a | COMMENT |
| LOW | lib/core/timeout.sh | 381 | COMMENT | |
| LOW | lib/optimize/tasks.sh | 101 | ;; | COMMENT |
| LOW | lib/optimize/diagnostics.sh | 541 | # printed "swap 0GB of 1GB used (88%)" on a machine with a small swap file. | COMMENT |
| LOW | lib/clean/app_caches.sh | 541 | # fix parsed. `man plutil` says of `-p`: "The output format is not stable and | COMMENT |
| LOW | lib/clean/app_caches.sh | 661 | # to render its in-app docs, sheets, slides, and AI surfaces. Every workspace | COMMENT |
| LOW | lib/clean/app_caches.sh | 781 | # with no Notion install on hand to confirm the reclaim or to check that login | COMMENT |
| LOW | lib/clean/app_caches.sh | 841 | "$cleanup_deadline" || guarded_rc=$? | COMMENT |
| LOW | lib/clean/app_caches.sh | 861 | # WeCom cefcache/<profile>/Cache 424 MB | COMMENT |
| LOW | lib/clean/dev.sh | 461 | return 0 | COMMENT |
| LOW | lib/clean/dev.sh | 961 | # that child is hard-safety whitelisted. Whitelisting a nested path also | COMMENT |
| LOW | lib/clean/dev.sh | 1401 | "Rust" \ | COMMENT |
| LOW | lib/clean/dev.sh | 2721 | [[ -n "$excerpt" ]] || return 0 | COMMENT |
| LOW | lib/clean/dev.sh | 2741 | # list` heads each image with the image version ("iOS 26.4.1") while `list | COMMENT |
| LOW | lib/clean/dev.sh | 3141 | # Gradle: Respects whitelist, cleaned when not protected via: mo clean --whitelist | COMMENT |
| LOW | lib/clean/dev.sh | 4081 | [[ $clean_rc -eq 0 || $clean_rc -eq 1 ]] || return "$clean_rc" | COMMENT |
| LOW | lib/clean/dev.sh | 4481 | # `lsof +D` returns 1 when no open files match. Timeouts or other failures | COMMENT |
| LOW | lib/clean/dev.sh | 4561 | local physical_after="" | COMMENT |
| LOW | lib/clean/dev.sh | 4861 | # The installer holds install.lock with POSIX lockf while it unpacks a release | COMMENT |
| 10 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/sudo_adoption_pty.py | 26 | IFS= read -r answer < /dev/tty || return 1 | CODE |
| HIGH | tests/sudo_adoption_pty.py | 34 | sudo -n -v || exit 1 | CODE |
| HIGH | tests/uninstall_brew_output_pty.py | 39 | _batch_execute_removals || rc=$? | CODE |
| HIGH | tests/uninstall_review_pty.py | 34 | _batch_preview_and_confirm || rc=$? | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/sudo_adoption_pty.py | 49 | CODE | |
| LOW | tests/main_menu_pty.py | 20 | CODE | |
| LOW | tests/main_menu_pty.py | 107 | CODE | |
| LOW | tests/uninstall_menu_pty.py | 37 | CODE | |
| LOW | tests/purge_menu_pty.py | 160 | CODE | |
| LOW | tests/menu_search_pty.py | 36 | CODE | |
| LOW | tests/menu_search_pty.py | 101 | CODE | |
| LOW | scripts/audit_incidents.py | 105 | CODE | |
| LOW | scripts/audit_skill_commands.py | 43 | CODE | |
| LOW | scripts/audit_skill_commands.py | 159 | CODE | |
| LOW | scripts/audit_bats_assertions.py | 54 | CODE | |
| LOW | scripts/e2e_macos.py | 489 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | lib/core/ui.sh | 108 | # we cannot just use the total width formula on the whole string. | COMMENT |
| MEDIUM | lib/core/sudo.sh | 393 | # Use the robust implementation from common.sh | COMMENT |
| MEDIUM | lib/clean/dev.sh | 4086 | # When an MCP server or agent harness dies without cleanup, its browser | COMMENT |
| MEDIUM | lib/uninstall/batch.sh | 2119 | # not by the app bundle's owner. Do not elevate solely because a | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/main_menu_pty.py | 182 | def check_inherited_term_mask(): | STRING |
| LOW | tests/purge_menu_pty.py | 160 | def check_activity_poll_interrupt(root: Path) -> None: | STRING |
| LOW | tests/menu_search_pty.py | 101 | def check_term_without_keypress(): | STRING |
| LOW | tests/e2e_harness_test.py | 65 | def test_failed_prerequisites_block_dependent_actions_with_keep_going(self): | CODE |
| LOW⚡ | tests/e2e_harness_test.py | 80 | def test_read_only_failure_keeps_independent_analyze_and_smoke(self): | CODE |
| LOW⚡ | tests/e2e_harness_test.py | 84 | def test_default_stops_after_first_failure(self): | CODE |
| LOW⚡ | tests/e2e_harness_test.py | 88 | def test_failed_transfer_and_checksum_block_installation(self): | CODE |
| LOW⚡ | tests/e2e_harness_test.py | 96 | def test_success_and_explicit_skip_build_keep_the_full_flow(self): | CODE |
| LOW⚡ | tests/e2e_harness_test.py | 106 | def test_rate_limited_release_lookup_falls_back_to_signed_in_gh(self): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/purge_menu_pty.py | 299 | except (ProcessLookupError, PermissionError): | CODE |
| HIGH | scripts/e2e_macos.py | 154 | except OSError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/sudo_tty_pty.py | 9 | CODE | |
| LOW | scripts/audit_destructive_sinks.py | 4 | CODE | |
| LOW | scripts/audit_incidents.py | 18 | CODE | |
| LOW | scripts/audit_skill_commands.py | 18 | CODE | |
| LOW | scripts/audit_function_duplication.py | 25 | CODE | |
| LOW | scripts/audit_bats_assertions.py | 20 | CODE | |
| LOW | scripts/risk_tier.py | 20 | CODE | |
| LOW | scripts/audit_timeout_status.py | 12 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | bin/touchid.sh | 143 | # Create the file | COMMENT |
| MEDIUM | bin/slim.sh | 538 | # Create the output exclusively rather than opening a bundle-owned path. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …aude/skills/bugs/references/shell-and-test-pitfalls.md | 64 | ## 15. Cancellation is local unless orchestration makes it sticky | COMMENT |
| MEDIUM | lib/clean/user.sh | 2283 | # BrowserOS (Chromium-based agentic browser). | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/main_menu_pty.py | 107 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/purge_menu_pty.py | 309 | except Exception as cleanup_error: | STRING |