mirror of
https://github.com/wiltodelta/remove-ai-watermarks.git
synced 2026-08-31 01:30:35 +02:00
Tiled diffusion was never provider-oracle calibrated with verified text restoration: the tiled VAE donor path ran anyway and produced results no oracle had certified. The combination is now rejected at both the pipeline and the engine seam (ValueError with the reason), and the CLI help no longer implies support. The invisible help is generalized and the metadata container list corrected (MKA/OGA/Opus/AAC). scripts/contentseal_transforms.py reproduces the deterministic crop, resize, and JPEG variants of the Content Seal corpus from manifest.csv, hash-verifying every output; its README gains scripts/README.md context and new data tests. The corpus README is honest about the one crop the daily oracle limit left unchecked, and the eval CSVs carry the updated verdicts. The byte-scan SynthID suppression hoists its soft-binding lookup so the guard is computed once. Staged on top of 0.33.1; no version bump in this commit.
89 lines
3.6 KiB
Python
89 lines
3.6 KiB
Python
"""Regression: a manifest that names its own forensic soft binding must not
|
|
also report a SynthID watermark from the generic vendor-token inference.
|
|
|
|
Microsoft Designer manifests sign as Microsoft, carry the InvisMark
|
|
``c2pa.watermarked`` action, and name their generation agent
|
|
"Azure OpenAI ImageGen". The OpenAI issuer token inside that agent name plus
|
|
the watermarked action used to satisfy the OpenAI SynthID-evidence rule,
|
|
double-counting one forensic mark as two pixel watermarks.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from remove_ai_watermarks._internal.c2pa import c2pa_info_from_manifest_store
|
|
|
|
DESIGNER_STORE = {
|
|
"active_manifest": "designer",
|
|
"manifests": {
|
|
"designer": {
|
|
"signature_info": {"issuer": "Microsoft Corporation", "common_name": "Microsoft Corporation"},
|
|
"claim_generator_info": [{"name": "Microsoft Responsible AI Provenance", "version": "1.0"}],
|
|
"assertions": [
|
|
{
|
|
"label": "c2pa.actions",
|
|
"data": {
|
|
"actions": [
|
|
{
|
|
"action": "c2pa.created",
|
|
"softwareAgent": {"name": "Azure OpenAI ImageGen"},
|
|
"digitalSourceType": "http://cv.iptc.org/newscodes/digitalsourcetype/trainedAlgorithmicMedia",
|
|
},
|
|
{"action": "c2pa.watermarked"},
|
|
]
|
|
},
|
|
},
|
|
{
|
|
"label": "c2pa.soft-binding",
|
|
"data": {
|
|
"alg": "com.microsoft.invismark.1",
|
|
"blocks": [{"value": "bf7a2993-cc1f-47e1-b1f0-cd8839aabb22"}],
|
|
},
|
|
},
|
|
],
|
|
}
|
|
},
|
|
}
|
|
|
|
|
|
def test_named_soft_binding_suppresses_generic_synthid_evidence() -> None:
|
|
info = c2pa_info_from_manifest_store(DESIGNER_STORE)
|
|
assert info["ai_source_kind"] == "generated"
|
|
assert info["soft_binding_algorithm"] == "com.microsoft.invismark.1"
|
|
assert info.get("synthid_watermark") is None
|
|
assert info.get("synthid_vendors") is None
|
|
|
|
|
|
def test_vendor_agent_name_alone_is_not_the_vendors_provenance() -> None:
|
|
"""The identity-scoped inference must not fire on a service name either.
|
|
|
|
Same manifest without the soft binding: the "Azure OpenAI ImageGen" agent
|
|
is not an OpenAI signature or claim generator, so no OpenAI SynthID
|
|
evidence may be derived from it.
|
|
"""
|
|
store = {
|
|
"active_manifest": "designer",
|
|
"manifests": {
|
|
"designer": {
|
|
"signature_info": {"issuer": "Microsoft Corporation", "common_name": "Microsoft Corporation"},
|
|
"claim_generator_info": [{"name": "Microsoft Responsible AI Provenance", "version": "1.0"}],
|
|
"assertions": [
|
|
{
|
|
"label": "c2pa.actions",
|
|
"data": {
|
|
"actions": [
|
|
{
|
|
"action": "c2pa.created",
|
|
"softwareAgent": {"name": "Azure OpenAI ImageGen"},
|
|
"digitalSourceType": "http://cv.iptc.org/newscodes/digitalsourcetype/trainedAlgorithmicMedia",
|
|
},
|
|
{"action": "c2pa.watermarked"},
|
|
]
|
|
},
|
|
}
|
|
],
|
|
}
|
|
},
|
|
}
|
|
info = c2pa_info_from_manifest_store(store)
|
|
assert info.get("synthid_watermark") is None
|