Skip to content

feat(scanners): coverage gaps — 57 sub-tasks, 16 scanners, 492 tests#3

Open
wgordon17 wants to merge 8 commits intogordon-code:mainfrom
wgordon17:feat/scanner-coverage-gaps
Open

feat(scanners): coverage gaps — 57 sub-tasks, 16 scanners, 492 tests#3
wgordon17 wants to merge 8 commits intogordon-code:mainfrom
wgordon17:feat/scanner-coverage-gaps

Conversation

@wgordon17
Copy link
Member

Summary

  • Implement all 57 sub-tasks from the scanner coverage gaps plan across 16 scanners
  • Add 17 new Pydantic model classes, modify 19 existing models
  • Create new library_audit scanner for ~/Library and /Library directory auditing
  • Enhance all 15 existing scanners with expanded discovery capabilities
  • Add 273 new tests (219 → 492), all passing with ruff and pyright clean

Implement all scanner coverage gaps from the comprehensive plan:

- 17 new model classes, 19 modified models
- New library_audit scanner (~/Library + /Library audit)
- Enhanced all 15 existing scanners with expanded discovery
- 273 new tests (219→492), all passing

Key additions per scanner:
- preferences: SyncedPreferences, cfprefsd-only domains, source tracking
- dotfiles: discovery mode, XDG support, sensitive paths, manager detection
- shell: conf.d, completions, source following, frameworks, eval detection
- app_config: Containers, recursive os.walk, volume safeguards
- applications: PATH binaries, dev tool versions, Xcode/CLT
- launch_agents: raw plist capture, sensitive env redaction, typed fields
- homebrew: services, pinned formulae, prefix
- cron: schedule parsing with trigger types, env vars
- network: IPv6, VPN, SOCKS/FTP proxy, WiFi list, locations
- security: firewall rules, Touch ID sudo, custom certificates
- system: macOS version, hardware, Time Machine, sleep, printers, etc.
- display: Night Shift, refresh rate, color profile, True Tone
- audio: full volume settings parsing
- fonts: font collections
- library_audit: directory audit, content capture, workflow/keybinding handlers
- Rename _convert_datetimes → convert_datetimes (used cross-module)
- Use brew services list --json instead of fragile text parsing
- Tighten _classify_binary_source path matching to avoid false positives
- Remove unused brew_names parameter from _get_path_binaries
- Consolidate dirnames pruning in library_audit _capture_uncovered_dir
- Remove unused _SYSTEM_COVERED_DIRS constant
- Clarify Night Shift UUID-keyed plist fallback with comment
- Fix extra blank line in preferences.py
@wgordon17 wgordon17 force-pushed the feat/scanner-coverage-gaps branch from f07302b to 3dc330c Compare March 11, 2026 18:50
Implement 4 new scanners detecting non-macOS-native package management:

- nix_state: Nix installation, profiles, nix-darwin, home-manager,
  channels, flakes, registries, config, devbox/devenv/direnv
- version_managers: asdf, mise, nvm, pyenv, rbenv, jenv, sdkman
- package_managers: MacPorts, Conda/Mamba
- containers: Docker, Podman, Colima, OrbStack, Lima

Also extends existing scanners:
- system_scanner: Rosetta 2, System Extensions, iCloud, MDM detection
- applications: 9 new BinarySource values + 19 path patterns

New models in package_managers.py (27 models). SystemConfig extended
with rosetta_installed, system_extensions, icloud, mdm_enrolled.
SystemState wired with 4 new domain fields. 19 total scanners.

242 new tests (734 total), ruff clean, pyright 0 errors.
@wgordon17 wgordon17 force-pushed the feat/scanner-coverage-gaps branch from 3dc330c to fb93925 Compare March 11, 2026 18:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant