diff --git a/docs/module-internals.md b/docs/module-internals.md index 6dbc263..a774b40 100644 --- a/docs/module-internals.md +++ b/docs/module-internals.md @@ -2272,6 +2272,17 @@ resolution case -- every verdict so far comes from one fixture and one seed. Both ends of the shipped curve now have oracle verdicts, and the shipped curve clears everything it has been tested at: +A source-fresh GPT Image 2.5 check on 2026-09-15 exercised the complete shipped +profile rather than only a strength sweep. One 1024 x 1024 API generation from +Flare and one from Sunburst both validated as current OpenAI C2PA, routed to the +flat OpenAI strength, and remained OpenAI SynthID-positive after pixel-identical +metadata removal. The complete `qwen-zimage` profile at 0.07675, seed 0, cleared +both in the official OpenAI Content Provenance API. The Flare output measured +37.48 dB PSNR / 0.9329 SSIM and the Sunburst output 37.01 dB / 0.9179 against +their sources. Those fidelity numbers describe two neutral studio-photo +carriers, not a content-wide quality estimate, and the source-positive/output-negative +oracle pairs do not replace the wider OpenAI calibration that set the floor. + | oracle | fixture size | detected at | clean from | |---|---|---|---| | openai.com/verify | 1.57 MP | 0.06 | 0.08 | diff --git a/docs/supported-signals.md b/docs/supported-signals.md index 0ad45da..7c5fae3 100644 --- a/docs/supported-signals.md +++ b/docs/supported-signals.md @@ -171,7 +171,11 @@ and `scripts/synthid_runtime/`. The tool recognizes presence from supported provenance: Google AI C2PA under Google's all-media watermark policy, and current OpenAI C2PA carrying an explicit `c2pa.watermarked.*` action. Legacy OpenAI C2PA without that action -does not assert SynthID. +does not assert SynthID. GPT Image 2.5 Flare and Sunburst were verified on +2026-09-15: both API outputs carried valid OpenAI C2PA with +`c2pa.watermarked.unbound` and exercised the existing model-independent OpenAI +route. Automatic routing selected `qwen-zimage` with the OpenAI strength cohort, +and both outputs cleared the official OpenAI SynthID check. Provider verifiers and provenance APIs are reserved for development-time calibration. They are not exposed through the installed CLI, the top-level diff --git a/docs/synthid.md b/docs/synthid.md index 839f4ff..ae18d50 100644 --- a/docs/synthid.md +++ b/docs/synthid.md @@ -775,6 +775,20 @@ SynthID. Current OpenAI manifests distinguish the watermarked output with the signed `c2pa.watermarked.unbound` action. The detector requires that action, so old OpenAI C2PA remains an origin signal without becoming a SynthID claim. +**GPT Image 2.5 compatibility, verified 2026-09-15.** One fresh low-quality +1024 x 1024 API generation from each released model, `gpt-image-2.5-flare` and +`gpt-image-2.5-sunburst`, carried a valid bound OpenAI C2PA claim generated by +`OpenAI Media Service API`, with `trainedAlgorithmicMedia` and the action set +`created, converted, watermarked.unbound`. `identify` reported high-confidence +OpenAI provenance plus SynthID, `has_invisible_target` returned true, and the +automatic strength cohort resolved to OpenAI for both files. After C2PA was +removed without changing decoded pixels, the official OpenAI Content Provenance +API still returned SynthID `detected` for both sources. The complete shipped +`qwen-zimage` profile at strength 0.07675 and seed 0 then produced two outputs +for which the same metadata-independent API returned SynthID `not_detected`. +This is one controlled source per model and proves the current routing and +operating point on those two sources; it is not a provider-wide removal rate. + ### 4.3 Other vendors - **Kakao** (South Korea): SynthID adopter as of May 2026 (Google announcement)