Severity
High — deletion doesn't stick for any job migrated from legacy templates/schedules.
What happens
On every mount the screen runs mergeLegacyJobs(savedJobs, exportTemplates, importTemplates, scheduledExports) and re-persists. Deleting a migrated job (id export:<templateId> etc.) only filters savedJobs; the legacy template rows are untouched, so byId.has(job.id) is false on the next visit and the job is re-added and re-saved. Tests only assert dedup of existing ids, not deletion.
Evidence
src/ui/screens/SavedJobsScreen.tsx:32-42
src/ui/utils/savedJobs.ts:49-60
Suggested fix
Record deleted legacy ids (tombstones) and exclude them in mergeLegacyJobs, or delete/mark the source template when the job is deleted.
Environment
Commit 74cf21b (main), WaveLink 0.6.0. Found in the 2026-08-31 adversarial audit (code-verified).
Severity
High — deletion doesn't stick for any job migrated from legacy templates/schedules.
What happens
On every mount the screen runs
mergeLegacyJobs(savedJobs, exportTemplates, importTemplates, scheduledExports)and re-persists. Deleting a migrated job (idexport:<templateId>etc.) only filterssavedJobs; the legacy template rows are untouched, sobyId.has(job.id)is false on the next visit and the job is re-added and re-saved. Tests only assert dedup of existing ids, not deletion.Evidence
src/ui/screens/SavedJobsScreen.tsx:32-42src/ui/utils/savedJobs.ts:49-60Suggested fix
Record deleted legacy ids (tombstones) and exclude them in
mergeLegacyJobs, or delete/mark the source template when the job is deleted.Environment
Commit
74cf21b(main), WaveLink 0.6.0. Found in the 2026-08-31 adversarial audit (code-verified).