Parent
Part of #463
Severity
Medium
Problem
DataExportService.saveToFile opens the destination with openWrite and streams via writeToSink. On failure it closes the sink and returns SaveExportOutcome.error, but never deletes the partially written file. User can get a truncated CSV/JSON/SQL on disk while UI only shows a generic export error.
Evidence
lib/shared/services/data_export_service.dart (~343–360)
- Bugbot review
dev vs main (2026-07-27)
Acceptance
Suggested fix
try/finally or catch: if outcome is error and file exists, await file.delete() (ignore delete errors).
Parent
Part of #463
Severity
Medium
Problem
DataExportService.saveToFileopens the destination withopenWriteand streams viawriteToSink. On failure it closes the sink and returnsSaveExportOutcome.error, but never deletes the partially written file. User can get a truncated CSV/JSON/SQL on disk while UI only shows a generic export error.Evidence
lib/shared/services/data_export_service.dart(~343–360)devvsmain(2026-07-27)Acceptance
Suggested fix
try/finallyorcatch: if outcome is error and file exists,await file.delete()(ignore delete errors).