# Force LF line endings across platforms for ALL text-format files. The
# Windows default `core.autocrlf=true` would convert LF to CRLF on
# checkout, which breaks the hash + signature integrity verification:
# the canonicalized JSON-LD form depends on the exact bytes of the
# referenced @context file (and the package itself), and CRLF vs LF
# in those source files produces different canonical hashes.
#
# This file pins line endings to LF on disk regardless of platform —
# the same content + bytes = the same hash on Linux, macOS, and Windows.
*               text=auto eol=lf
*.jsonld        text eol=lf
*.json          text eol=lf
*.rules         text eol=lf
*.ttl           text eol=lf
*.yaml          text eol=lf
*.yml           text eol=lf
*.py            text eol=lf
*.md            text eol=lf
*.toml          text eol=lf
*.cfg           text eol=lf
*.ini           text eol=lf
*.key           text eol=lf
*.pub           text eol=lf
*.txt           text eol=lf
# Binary formats — never normalize.
*.png           binary
*.jpg           binary
*.jpeg          binary
*.gif           binary
*.pdf           binary
*.zip           binary
*.tar.gz        binary
*.jar           binary
*.xlsx          binary
*.xlsm          binary
*.docx          binary
dev/build/**/*.tgz filter=lfs diff=lfs merge=lfs -text
dev/build/**/*.csv filter=lfs diff=lfs merge=lfs -text

# Solver-artifact fixtures are byte-exact by contract: tests/solver builds a
# reproducible .wbpz from this tree and asserts member digests, so any
# normalization changes the answer between a checkout on Linux and one on
# Windows. The tree also holds a UTF-16LE log and two CRLF files on purpose --
# both mirror real Workbench output, and both are what the encoding-sniffing
# tests exist to exercise.
tests/fixtures/solver/**  -text -diff
