Leela Yanamaddi
November 2, 2026

A signed file does not prove you have permission to use it. I’d build an audit-ready pipeline around 3 linked checks: approved use, file history, and signature validation. If any check fails or remains unresolved, block the release.
In this proposed framework, I explain how to:
My guiding rule: <u>keep permission checks separate from signature checks</u>. Link both to a read-only audit record so you can explain what was released, who approved it, and why.
Audit-Ready Data Pipeline: Consent, Provenance, and C2PA
Create the permissions register before recording anything that may include people, bystanders, or workplace audio. Record the legal-review outcome and jurisdiction assumptions in the campaign configuration. Each collection event should generate a consent_id that can be checked at release. Link each consent record to the capture_id and asset_id defined above.
Require these fields before approving collection. Keep notice, consent, authorization, and eligibility separate. Receiving a notice or passing an eligibility check does not establish permission.
| Field group | Required fields |
|---|---|
| Identity and context | consent_id, pseudonymous contributor_id, campaign, organization, site, jurisdiction, device/session ID, source asset references |
| Capture and disclosure | Capture start/end, time zone, notice and consent-form versions, language, notice_delivered_at, consent_recorded_at, consent method |
| Permission scope | Purposes, permitted dataset uses, prohibitions, media and derivative types, customer/recipient restrictions, geography, retention end date |
| Evidence and review | Evidence reference, cryptographic hash, verification result, eligibility result, reviewer, approval timestamp, legal-review reference |
| Payment and lifecycle | Compensation amount in USD, payment status and any compensation terms, current status, effective-from time, expiration or retention-end date |
Use structured, versioned scope values - not free-text permission notes. List each media type, permitted use, and restriction separately. Unspecified scope is not granted unless an approved legal policy says otherwise.
Store signatures, contact details, and identity evidence in restricted, encrypted storage with role-based access. Ordinary dataset records should reference that evidence rather than contain it. Payment does not establish consent.
Support under_review, granted, expired, and withdrawn. Check permission for each purpose, media type, customer, geography, and retention period - not just the overall status.
For each withdrawal or restriction, append a change_id, request-received and effective timestamps, affected scope, reason code, requester-verification method, reviewer, evidence reference, and notice/response status. State whether the change affects future capture, existing footage, derivatives, or prior deliveries.
When consent is the chosen basis, provide a withdrawal channel comparable to the original consent path. Verify requests without collecting excessive identity information, and send confirmation. California law requires revocation to be available as easily as consent was provided through that mechanism.
Make pending requests and effective restrictions searchable before export, licensing, training, or delivery. Block unresolved permissions and route affected assets for review. Record whether withdrawal triggers deletion, redaction, a retention exception, or suppression of future use.
Consent records must pass review before source footage moves to provenance tracking and signing. Use this review as the gate before lineage mapping and C2PA signing.
Once consent is approved, create lineage records for the asset and prepare its release snapshot.
In PROV, treat source files, processed clips, annotation sets, and delivery packages as entities. Processing steps are activities; services, people, and organizations are agents. Connect these records with used, wasGeneratedBy, wasAssociatedWith, and wasDerivedFrom. Keep originals intact. When content changes, add new entities and version the metadata.
Each entity should record the IDs defined above, asset type, parent IDs, consent-record references, storage URI or object key, cryptographic hash and hashing algorithm, media properties, capture and ingestion timestamps, creation or invalidation status, transformation activity ID, and retention or deletion date.
Each activity should record input and output hashes, start and end times, tool name and version, parameters or configuration hash, responsible agent, job-log reference, approval status, and exception details. Parent IDs alone do not prove which bytes were processed.
| Record type | Purpose | Retention | Mutability | Audit use |
|---|---|---|---|---|
| Event log | Records actions, times, actors, and results | Policy-defined audit/legal period | Append-only; corrections add events | Checks execution, approvals, and failures |
| Lineage graph | Connects sources, activities, agents, and outputs | Life of linked assets and deliveries | Preserve old links; append corrections | Traces delivery back to source |
| Asset metadata | Describes an artifact’s identity and properties | While usable or discoverable | Versioned; preserve prior values | Supports lookup, hash checks, and release review |
Use PROV for internal tracing and C2PA for the release package. Sign assets only when they match the approved consent scope and pass lineage checks.
Create signed manifests at review gates: ingestion, privacy processing, annotation review, and final packaging or export. You don’t need a manifest after every internal operation. Assertions describe provenance facts, the claim references those assertions, and the claim signature authenticates the claim. A content binding connects the manifest to the asset; ingredient references link source assets.
At ingestion, record the source identity and time. For normalization, trimming, redaction, and audio removal, record the relevant actions and link to detailed parameters. For annotation and quality review, link schema versions, decisions, checks, and exceptions. At packaging and export, link component hashes and the delivery ID.
Use supported assertions or labeled custom assertions, and keep detailed job records outside the manifest. Leave out raw contributor identities and consent documents; use controlled references instead. C2PA holds the release snapshot, while PROV holds detailed lineage and responsibility records.
Illustrative only; not production-ready C2PA syntax. This represents the release snapshot derived from the PROV graph.
{ "manifest_id": "manifest-clip-a91c-v3", "asset_id": "clip-a91c", "claim_generator": "dataset-pipeline/4.2.1", "created": "2026-02-14T16:32:10Z", "ingredients": [{ "asset_id": "source-8f31", "relationship": "parent", "hash_ref": "sha256:SOURCE_HASH" }], "assertions": [{ "action": "privacy.redaction", "tool": "redaction-service/2.8.0", "timestamp": "2026-02-14T16:30:44Z" }, { "action": "annotation.completed", "schema": "physical-ai-labels/1.3" }], "content_binding": { "type": "hard-binding", "hash_ref": "sha256:DERIVATIVE_HASH" }, "claim_signature": { "algorithm": "illustrative-signature-algorithm", "signature_ref": "sig-clip-a91c-v3", "certificate_ref": "cert-pipeline-signing-07" } }
Before accepting an asset, check its manifest structure, claim signature, content binding, certificate-chain trust, revocation status, and credential validity at signing time. A certificate that has since expired does not automatically fail validation. Check signing-time evidence and preserve unresolved results.
Resolve ingredients, compare actions and hashes with the lineage graph and job logs, and flag unexpected changes or missing links. Save each validation outcome separately, along with the validator version, validation time, trust-list or ruleset version, warnings, and exceptions.
Feed these validation results into the release gate in Step 3.
This workflow connects consent, provenance, and C2PA at release time.
Use the validated manifest from Step 2 as the release gate for each delivery.
Illustrative warehouse workflow:
1. Register and ingest
Register
consent-00421, link it to the collection event, and record the permitted purpose, recipient class, geography, expiration, and withdrawal channel. Ingestsrc-warehouse-2025-0017and record its SHA-256 hash, storage location, capture device, ingestion timestamp, and ingesting service identity. Linksrc-warehouse-2025-0017toconsent-00421and record the approved scope. This establishes the consent record for later checks.2. Process and verify
Record
redaction-service@v3.4.1, code version, configuration, input and output hashes, timestamp, and operator or service identity. Createclip-warehouse-2025-0017-r1and link it to the source with the selected time range, redaction operation, and processing result. Perform privacy-sensitive exposure checks and record the reviewer and evidence reference. Sign the approved clip with a C2PA manifest identifying the source ingredient, redaction action, processing tool, output hash, signing certificate, and timestamp. This creates the signed derivative for release review.Carry the same IDs forward so the release decision links consent, lineage, manifest, and delivery.
3. Approve and monitor
Before release, verify consent scope, lineage, hashes, privacy checks, and C2PA validation. Create
delivery-2025-0088for the approved export package and manifest, recording their hashes, recipient, approved purpose, license terms, access expiration, and release reviewer. Connect these records in the audit index and monitor withdrawals, corrections, expiration, processing defects, and signing-key events. This creates the delivery record used for audit and withdrawal tracking.
Give recipients a delivery-specific audit summary, not participant records. Include the export hash, dataset ID, manifest ID, consent status, privacy result, validation result, and audit contact. Redact direct identifiers and sensitive footage unless disclosure is necessary and separately authorized. Keep the validation timestamp in the audit index so reviewers can reconstruct the release decision.
Use the audit index to enforce a fail-closed release gate. Block consent-based releases when consent is missing, unverifiable, expired, withdrawn, or outside the approved scope. Also block releases with missing parents, mismatched hashes, incomplete or unverified privacy processing, unapproved export contents, or failed C2PA validation.
Record machine-readable outcomes such as BLOCKED_CONSENT and BLOCKED_PRIVACY. Route consent issues to privacy or legal, lineage issues to the dataset owner, and credential failures to security. Preserve the failed check, evidence, named approver, decision time, and any exception deadline. Never overwrite the original failure. A valid C2PA signature does not prove lawful permission.
When consent changes, carry that event through every linked record. If consent-00421 is withdrawn, block new consent-based processing and deliveries. Then trace the links through sources, clips, shards, indexes, and exports.
Revoke access and append an event for each quarantine, deletion, reprocessing, replacement, or retention exception. Link every remediation event to the original consent ID and delivery ID. Review prior deliveries for notification, deletion, replacement, or access suspension duties. Where available, link affected training-run IDs, dataset versions, and run dates.
Deleting footage does not establish that its influence has been removed from trained models. Document unresolved downstream effects in the audit index. Have legal reviewers map retention and remediation decisions to applicable U.S. privacy, labor, biometric, and contractual requirements.
Link consent, provenance, and C2PA so each release can be traced from permission to delivery. Check permission separately from signature validity. Keep that trail intact through consent collection, processing, signing, release approval, withdrawal handling, and post-release review.
Assign one owner and one backup for each record type: legal operations for consent, data governance for lineage and retention, engineering for processing records, security for access, and the release owner for C2PA evidence. Review withdrawals immediately, access and exceptions monthly, source-to-delivery samples quarterly, and retention rules, notices, and signing certificates annually.
Keep enough evidence to reconstruct every release package without searching across systems. Treat the following as required linked records:
For every record category, document the retention period, owner, permitted roles, storage location, legal-hold rules, and disposal method. Apply least-privilege access and keep proof of disposal. Store sensitive identity records separately from processing lineage wherever possible.
Maintain a read-only audit bundle with a human-readable summary and structured records. Include successful and failed verification results so reviewers can reconstruct each decision. Update the bundle after each material change to keep withdrawal, delivery, and verification histories aligned.
Set clear privacy and safety rules before recording, and identify anyone likely to appear. Get written permission from everyone recorded. A participant’s release does not cover coworkers or bystanders.
If bystanders are recorded without explicit consent, use automatic redaction before delivery. Then have a person check that no personal information remains exposed. Blurring does not replace formal permission.
Use stable sample IDs to connect source footage or sessions with consent records, processing steps, derived clips, and delivery checksums. Automatically check every delivered episode or file against its recorded history and manifest.
Log unmatched, changed, or missing files, along with any missing consent or provenance fields. Quarantine affected episodes until authorization and permitted-use checks are restored.
Check coverage for each required condition - not just overall totals - to find groups whose accepted counts fall below minimums.
Treat the affected data as restricted. Deleting source files doesn’t prove that the model has deleted or unlearned the data. Handle model removal or retraining as a separate decision, and document it.
Keep an auditable record of the withdrawal, the action taken, and the removal date so each step can be traced. For future use, release a new, versioned dataset that excludes the withdrawn content and meets the updated requirements.