# Line endings are pinned because content hashes are load-bearing here.
#
# OKFM stores `okfm_captured.hash` — a sha256 of a source file — and reports drift when a
# later observation disagrees. Drift has to mean "the source actually changed" or it means
# nothing, so anything that changes a hash without changing the content is a defect.
#
# Measured, not assumed: hashing raw bytes gives different digests for LF and CRLF copies
# of identical content; hashing through Python's text mode gives the same digest, because
# universal-newline translation normalizes before the hash is taken. The current resolver
# reads text, so it is already immune — see the note in dropin/bootstrap.py, which exists
# so nobody "optimizes" it to read_bytes() and reintroduces the problem.
#
# This file covers what that immunity does not: diff noise, and any future resolver that
# hashes bytes because the source is not text.

* text=auto eol=lf

*.md    text eol=lf
*.py    text eol=lf
*.json  text eol=lf
*.yaml  text eol=lf
*.yml   text eol=lf
*.html  text eol=lf
*.txt   text eol=lf

# Binaries, left alone.
*.png   binary
*.jpg   binary
*.pdf   binary
*.ico   binary
