Skip to content

feat(read): AI-forensics read parity - #22

Merged
woss merged 3 commits into
mainfrom
feat/read-parity-ai-tags
Sep 29, 2026
Merged

woss merged 3 commits into
mainfrom
feat/read-parity-ai-tags

Conversation

@woss

@woss woss commented Sep 29, 2026

Copy link
Copy Markdown
Owner

Summary

Minimal read-tag parity for Kelp Market (retires exiftoolFast Perl spawn):

  • PNG IHDR/sRGB: Filter, Interlace, SRGBRendering with reference PrintConv strings
  • tEXt/iTXt/zTXt: bare capitalized keyword surface (parameters → Parameters), zTXt deflate support, text chunks yield to EXIF/XMP
  • XMP: unknown-namespace local capitalization (InvokeAI Metadata/Graph), raw History container suppressed (stEvt flattening only), Z-suffix date normalization, GPano integer typing; TAG_REMAP entries for exif:UserComment, InvokeAI, DMI, GPano/IGPano
  • Writer fix: pngWriter omitted the IEND CRC — every PNG written by the library was truncated 4 bytes (reference: Truncated PNG IEND chunk)

Test

  • src/ai-parity.test.ts: reference-equal asserts on two new fixtures (06-ai-a1111.png tEXt parameters, 06-ai-invokeai.png XMP/DMI/History), exiftool-gated skip pattern
  • Full suite: 595/595; coverage audit PASS (100% line/function gate)
  • Programmatic key/value diff vs exiftool -j clean on probe and fixtures

- PNG IHDR: reference-named Filter/Interlace + sRGB chunk
  SRGBRendering with PrintConv strings
- tEXt/iTXt/zTXt surface bare capitalized keywords; zTXt
  inflate support; text chunks yield to EXIF/XMP keys
- XMP: unknown-namespace locals capitalize like reference;
  raw History container suppressed (stEvt flattening only);
  Z-suffix date normalization; GPano int typing; TAG_REMAP
  entries for UserComment, InvokeAI, DMI, GPano/IGPano
- fix(writer): pngWriter omitted IEND CRC - every written
  PNG was truncated by 4 bytes
- ai-parity.test.ts: reference-equal asserts on new A1111 +
  InvokeAI fixtures (exiftool-gated)
@woss woss changed the title feat(read): AI-forensics read parity for Kelp feat(read): AI-forensics read parity Sep 29, 2026
@woss
woss merged commit 697fa2f into main Sep 29, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant