You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
src-tauri/src/storage.rs:152-175 records JSON parse failures in corrupt_entries, but it still does fs::read_to_string(&project_file)?; a single unreadable file aborts the entire listing.
restore_sessions() depends on list_projects() at src-tauri/src/commands.rs:336-348, so one unreadable project can block startup session restore.
MaintainerScheduler::start() also depends on list_projects() at src-tauri/src/maintainer.rs:149-160, so the same error can suppress background maintainer runs for otherwise healthy projects.
Existing storage coverage only checks malformed JSON (src-tauri/src/storage.rs:403-421), not unreadable files.
Remediation:
Handle read_to_string failures the same way as parse failures: record a CorruptProjectEntry and continue.
Add a regression test for unreadable project.json.
Summary
Evidence:
src-tauri/src/storage.rs:152-175records JSON parse failures incorrupt_entries, but it still doesfs::read_to_string(&project_file)?; a single unreadable file aborts the entire listing.restore_sessions()depends onlist_projects()atsrc-tauri/src/commands.rs:336-348, so one unreadable project can block startup session restore.MaintainerScheduler::start()also depends onlist_projects()atsrc-tauri/src/maintainer.rs:149-160, so the same error can suppress background maintainer runs for otherwise healthy projects.src-tauri/src/storage.rs:403-421), not unreadable files.Remediation:
read_to_stringfailures the same way as parse failures: record aCorruptProjectEntryand continue.project.json.Maintainer Metadata
commands|corruption|failure|filesystem|inventory|listing|startup|storagestartup listing failure