Chain of custody

Week 4 found that one retained record — a transformation record that named its input, not merely listed what existed — was the one that resolved anything. This week: what happens to a record like that after the object keeps moving?

A record is not a signature

A provenance record is a set of assertions someone chose to keep. Writing them down does not make them true; their absence does not make the underlying claim false.

“No record survives” and “this is fabricated” are different claims — the same confusion week 4 warned against with co-existence and descent.

What C2PA actually guarantees

Anyone with file access can edit a plain JSON manifest.

C2PA binds a manifest to a signer’s cryptographic key — tampering after signing is detectable.

It verifies the assertions weren’t altered after signing. Not that they were true when made.

What this week’s audit found

Deposit manifest vs. public manifest vs. the publishing pipeline’s own change log.

The log names two operations — both check out exactly.

The real diff has two further changes the log never mentions: a field renamed rather than removed, and a checksum that changed because the field set changed.

An honest log can still be incomplete

The only way to find the gap was comparing the manifests directly — not trusting the log as a summary of them.

Not every absence is stripping

gpsCoordinates and cameraModel are absent from both manifests — not because this operation removed them, but because Output 7 never retained that data at any stage (week 4).

An audit treating every absence as stripping invents a suspicious history for data that was simply never there.