Files
remove-ai-watermarks/data/synthid/research-manifest.md
T

4.8 KiB

Private SynthID research manifest

The research manifest is a local CSV for detector and pixel-only removal experiments. It is intentionally separate from manifest.csv, which describes the small public regression corpus.

Store the CSV and its media below .local-eval/synthid/. Keep one manifest per detector target, for example google-manifest.csv and openai-manifest.csv. Separate manifests may reference the same external negative bytes without duplicating an artifact inside either provider's split graph. Do not commit private media, corpus sizes, oracle sessions, or provider-access details.

Before assigning labels, build a label-free inventory. It records byte and decoded-pixel hashes, exact duplicates, geometry, and format, but deliberately has no provider, oracle, outcome, or split columns:

uv run python scripts/synthid_research_inventory.py \
  --root .local-eval/synthid negatives google openai \
  --inventory-out .local-eval/synthid/inventory.csv

An inventory row becomes a manifest row only after its source, detector target, label evidence, group lineage, and split are established independently. A directory name is not evidence and must not be promoted mechanically.

Audit each local manifest with:

uv run python scripts/synthid_research_manifest.py \
  .local-eval/synthid/google-manifest.csv --verify-files

Once a provider manifest has ordinary positives and negatives in train, validation, and locked-test splits, run the D1 confound challenge:

uv run --extra pixels python scripts/synthid_confound_probe.py \
  .local-eval/synthid/google-manifest.csv \
  --target-provider google \
  --report-out .local-eval/synthid/google-d1-confounds.json

D1 excludes candidate, sham, and source-control rows. Its container, thumbnail, and canonical baselines intentionally measure how well export fields, geometry, and coarse generator/content style can imitate detection. A report is evidence-ready only when the locked test includes a same-provider hard negative and the temporal split contains both labels. Evidence readiness does not mean the D1 gate passed; a candidate signal still has to beat the frozen canonical baseline on those controls.

Columns

Column Meaning
artifact_sha256 SHA-256 of the exact file submitted or measured.
pixel_sha256 SHA-256 of decoded RGB bytes, used to catch lossless duplicates.
artifact_path Safe path relative to the manifest.
parent_sha256 Exact parent artifact for a derivative, empty for an original.
group_id Leakage boundary shared by an original and all semantic or transformed siblings.
target_provider Detector target, openai or google.
source_provider Actual source family: openai, google, camera, other_ai, synthetic, or editor.
surface Product or export surface.
model_epoch Model family plus a dated epoch when the exact version is unavailable.
generation_session Groups outputs created in one provider session.
content_stratum Predeclared content class.
width, height, format Decoded geometry and file format.
transform original or the reproducible transform applied to parent_sha256.
split discovery, train, validation, test, or temporal.
c2pa_outcome C2PA result, recorded independently from the pixel signal.
synthid_outcome detected, not_detected, indeterminate, refused, or not_checked.
verified_via Matching provider oracle, external source evidence, or none.
evidence_reference Stable URL or local evidence-record reference required for source-evidence; never infer it from a directory name.
oracle_session Groups allowed checks made in one session.
oracle_role ordinary, source_control, candidate, or sham.
captured_at, oracle_checked_at Timezone-aware ISO-8601 timestamps.
notes Verbatim context that does not fit a structured column.

source-evidence may establish an ordinary external negative, but never a positive or a same-provider negative. Provider positives and same-provider hard negatives require the matching provider verifier. An indeterminate, refused, or unchecked row may remain in discovery; it cannot enter a train, validation, test, or temporal split. Every source-evidence row must retain the source URL or evidence-record reference that establishes the claim.

The auditor also rejects duplicate artifact hashes, identical decoded pixels in different groups, derivatives without parents, cross-provider parentage, lineage cycles, and any group crossing split boundaries. A not_detected candidate or sham is valid only when the same provider, group, and oracle session contains a detected source_control. A session that misses its control cannot establish removal, even when its candidate response is negative.