From 1506c7dcd6032c04c1df6f5785b6dd3dfe4511cc Mon Sep 17 00:00:00 2001 From: Lukasz Kasprzak Date: Mon, 14 Sep 2026 10:56:21 +0200 Subject: krino: duplicates are found, never deleted A rule combining (duplicate) with a delete action is refused at load, and a file that is a duplicate under any duplicate scope its directory uses gets no delete step from any rule: the plan shows it skipped and the chain continues. A failed duplicate check blocks the delete too. Tests cover (matched), another rule's own condition, a test evaluation skipped, two scopes and a failed check, each checking every copy is still on disk. --- docs/design.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'docs/design.md') diff --git a/docs/design.md b/docs/design.md index 150e135..153bab0 100644 --- a/docs/design.md +++ b/docs/design.md @@ -243,7 +243,9 @@ jdupes. Two rules enforce this: plan shows the step as "skipped: a duplicate is never deleted" and the rest of the chain continues from the file's current path. This covers what rule 1 cannot see: a later rule deleting through `(matched)` or through a - condition of its own. + condition of its own. If that lookup fails, the delete is skipped too, as + "duplicate check failed, so not deleted: REASON": krino cannot show the + file is not a duplicate, so it keeps it. Together they mean no rule can delete every copy of content that a duplicate test in that directory can see. Under each scope every scanned file in a -- cgit v1.3