Compare an original asset with resized, converted, uploaded, or downloaded derivatives and produce a JSON, Markdown, or HTML provenance-survival report.
Compare an original asset with resized, converted, uploaded, or downloaded derivatives and produce a JSON, Markdown, or HTML provenance-survival report.
Use when testing whether a CMS, image optimizer, social network, editor, screenshot, watermark-removal tool, or publishing workflow preserves Content Credentials.
Stronger alternatives
This repository is archived — consider an actively maintained alternative.
Add --c2patool /path/to/c2patool for cryptographic validation. Remote-manifest fetching is disabled unless --allow-network is explicitly supplied.
Treat LOSTORUNAVAILABLE as an observed pipeline outcome, not proof of deliberate stripping.
Read summary for the counts, then quote individual rows for detail.
Re-run after pipeline, CDN, export, or platform changes.
Shareable reports
--report accepts a new .html, .htm, .md, or .markdown path and refuses to overwrite it.
HTML reports are self-contained and script-free. Markdown reports have the same evidence and caveats.
Absolute paths and the reproducibility command are redacted by default. --include-paths is an explicit opt-in.
JSON always remains on stdout, even when a report is written.
A report evaluates C2PA provenance survival only. It must not imply that proprietary pixel, audio, video, or keyed text watermark detectors ran.
Directory batches skip hidden entries and symlinks, recursively sort files, and use relative labels. With multiple directories, labels are prefixed by the directory name.
Evaluating a transformation tool
This skill also measures what a metadata-removal or optimisation tool actually removes. Run the tool over a signed original, pass its output as a derivative, and report the observed matrix. Report only what was observed: this skill does not certify that any downstream detector will or will not fire.
Experimental discipline
Change one transformation per derivative where possible.
Hash every artifact.
Keep content comparison separate from provenance comparison.
Record the app, command, platform, and date outside the generated matrix.
A different hash alone does not mean provenance failed; a derivative is expected to differ.
Use a conforming verifier before describing evidence as PRESENT, VALID, or INVALID.
Evaluate signer trust separately with verify-content-credentials; this survival workflow does not select a trust policy.
Read references/survival-testing.md for the state model and test design.