Adopt narrow health and system-map exception handling#603
Merged
Conversation
This was referenced Jun 1, 2026
Closed
Closed
7 tasks
vibeforge1111
added a commit
that referenced
this pull request
Jun 2, 2026
discover_repo_paths in system_map.py checked desktop.exists() then iterated desktop.iterdir() with no error handling. On macOS the default ~/Desktop is TCC-protected: .exists() returns True but .iterdir() raises PermissionError ([Errno 1] Operation not permitted). That uncaught error crashed `spark os capabilities|compile|authority|trace|memory` with a raw traceback (exit 1). A missing Desktop was already handled gracefully; an unreadable one now is too. Merged PR #603 hardened the sibling filesystem walkers in this file against PermissionError but missed discover_repo_paths. This completes that coverage with the same narrow OSError handling pattern. Fix: snapshot desktop.iterdir() inside try/except OSError -> [] before iterating, mirroring the surrounding narrow-exception style. Adds a regression test that drives discover_repo_paths with a desktop whose iterdir() raises PermissionError plus a non-empty installed dict, asserting it returns the installed paths without raising. Co-authored-by: His Dudeness <banse@users.noreply.github.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Maintainer adoption of four small Spark Compete source PRs that narrow broad exception handling in product-facing health/system-map readers.
Source PR credit:
urllib.error.URLErrorandTimeoutError.OSErrorinstead of broadException.(sqlite3.Error, OSError).(sqlite3.Error, OSError).No participant credit should be assigned to this maintainer adoption PR itself. Source PR points remain gated because their packet text currently is not clean fenced JSON for validator extraction; product adoption is still useful and safe.
Verification
python -m pytest tests\\test_cli.py -q -k spawner_healthpython -m pytest tests\\test_system_map.py -q -k filesystem_readers_or_builder_db_readerspython -m pytest tests\\test_system_map.py -qpython -m pytest tests\\test_cli.py -qpython -m compileall srcgit diff --checkpython -m spark_cli.cli verify --registry-pins --jsonRisk
Low. This narrows catches around expected network, filesystem, and SQLite failure boundaries and adds direct regression coverage. It does not change installer metadata, registry pins, scoring, secrets, auth, sandboxing, or runtime command execution.