During the stage 3 backfill (#2370) these committed AI-generated storyboards could not be signed because the image-quality pre-commit hook rejected their modified state:
Oversized after signing (C2PA manifest adds ~100KB per file, crosses the 500KB cap):
images/walkthrough/brand-panel-01-campaign-brief.png — 466KB pre-sign → 594KB post-sign
images/walkthrough/brand-panel-02-brand-discovery.png — 484KB pre-sign → 604KB post-sign
images/walkthrough/brand-panel-03-rights-search.png — 421KB pre-sign → 515KB post-sign
images/walkthrough/brand-panel-05-approval-paths.png — 445KB pre-sign → 612KB post-sign
images/walkthrough/brand-panel-06-creative-generation.png — 411KB pre-sign → 562KB post-sign (also has gibberish)
Pre-existing hallucinated glyphs the hook re-surfaces on any modification:
images/walkthrough/brand-before-after.png — orerled, oranigh, orangg, misnatched, misistched
images/walkthrough/brand-panel-06-creative-generation.png — 098, 001000111000, 0, 000 (also oversized)
images/walkthrough/commerce-media-05-closed-loop.png — R, Π
images/walkthrough/diagram-04-delivery-aggregation.png — لناس (unintended Arabic characters)
images/walkthrough/diagram-generative-tiers.png — clouses (not a word)
These are pre-existing artifacts that only became visible when backfill re-ran validation on modified files.
Fix
Regenerate each file via npx tsx scripts/generate-images.ts <prompt-file> --only <pattern>. The freshly-generated output will sign cleanly at generation time (stage 3 code already wired in #2370). For the size-only failures, pre-compress via sharp before signing.
Then re-run scripts/backfill-c2pa-static.ts to catch anything that slips through unsigned — no-op if generation-time signing worked.
Alternative: raise the 500KB limit in scripts/check-image-quality.sh to accommodate C2PA manifest overhead (the cap was set for content size, not metadata).
Related
During the stage 3 backfill (#2370) these committed AI-generated storyboards could not be signed because the image-quality pre-commit hook rejected their modified state:
Oversized after signing (C2PA manifest adds ~100KB per file, crosses the 500KB cap):
images/walkthrough/brand-panel-01-campaign-brief.png— 466KB pre-sign → 594KB post-signimages/walkthrough/brand-panel-02-brand-discovery.png— 484KB pre-sign → 604KB post-signimages/walkthrough/brand-panel-03-rights-search.png— 421KB pre-sign → 515KB post-signimages/walkthrough/brand-panel-05-approval-paths.png— 445KB pre-sign → 612KB post-signimages/walkthrough/brand-panel-06-creative-generation.png— 411KB pre-sign → 562KB post-sign (also has gibberish)Pre-existing hallucinated glyphs the hook re-surfaces on any modification:
images/walkthrough/brand-before-after.png—orerled, oranigh, orangg, misnatched, misistchedimages/walkthrough/brand-panel-06-creative-generation.png—098, 001000111000, 0, 000(also oversized)images/walkthrough/commerce-media-05-closed-loop.png—R, Πimages/walkthrough/diagram-04-delivery-aggregation.png—لناس(unintended Arabic characters)images/walkthrough/diagram-generative-tiers.png—clouses(not a word)These are pre-existing artifacts that only became visible when backfill re-ran validation on modified files.
Fix
Regenerate each file via
npx tsx scripts/generate-images.ts <prompt-file> --only <pattern>. The freshly-generated output will sign cleanly at generation time (stage 3 code already wired in #2370). For the size-only failures, pre-compress viasharpbefore signing.Then re-run
scripts/backfill-c2pa-static.tsto catch anything that slips through unsigned — no-op if generation-time signing worked.Alternative: raise the 500KB limit in
scripts/check-image-quality.shto accommodate C2PA manifest overhead (the cap was set for content size, not metadata).Related