mirror of
https://github.com/wiltodelta/remove-ai-watermarks.git
synced 2026-07-09 01:47:52 +02:00
fix(cli): preserve SynthID uncertainty in no-visible-mark message
The 'no signal' branch of the visible no-mark path claimed 'No AI provenance signal found either', which reads as 'the image is clean'. A missing metadata proxy is not proof an invisible pixel watermark (SynthID) is absent: it cannot be detected once metadata is gone and may have been stripped upstream. The message now preserves that uncertainty and routes to both 'all' (regenerate pixels) and 'erase'. Regression-guarded by the SynthID/all asserts in test_cli.py. CLAUDE.md visible-command note updated to match. Also adds a 'Scope and non-goals' section (CLAUDE.md + README): removing AI-provenance marks on the user's own content is in scope; stripping stock/paid-content watermarks (Shutterstock/Getty/iStock, classifieds) is out of scope by principle, not by difficulty. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -135,6 +135,11 @@ class TestVisibleCommand:
|
||||
assert result.exit_code == 2, result.output
|
||||
assert not output.exists()
|
||||
assert "erase" in result.output
|
||||
# The "no signal" branch must NOT imply the image is clean: a missing
|
||||
# metadata proxy is not proof an invisible pixel watermark (SynthID) is
|
||||
# absent, so the message preserves that uncertainty and routes to 'all'.
|
||||
assert "SynthID" in result.output
|
||||
assert "all" in result.output
|
||||
|
||||
def test_visible_auto_no_mark_routes_to_all_when_metadata(self, runner, tmp_path):
|
||||
# An image whose only signal is an invisible/metadata watermark (here SD
|
||||
|
||||
Reference in New Issue
Block a user