# Line endings are a correctness concern here, not a style preference.
#
# byte-machine's output contract is canonical UTF-8 with LF bytes even on
# Windows, and the determinism lanes compare generated source byte for byte
# against committed goldens on every operating system. A checkout that
# translated line endings would break that comparison for a reason that has
# nothing to do with the generator, and the failure would point at the emitter.
#
# Normalize everything to LF in the repository and on checkout.
* text=auto eol=lf

# Files whose exact bytes are the thing under test are marked binary outright,
# so no filter, no autocrlf setting, and no future .gitattributes edit can touch
# them. eol=lf above would be enough today; -text is enough forever.
#
# HTTP is the reason this matters concretely: the private request fixture is
# CRLF-framed, and a fixture whose CRLFs became LFs would still parse as a
# plausible message while testing the wrong grammar.
test/fixtures/** -text
bench/fixtures/** -text
*.expected -text

# The development record -- implementation plans, decision records, and the
# contributor process guide -- stays in the repository but is left out of
# release archives (`git archive`, and the source archives GitHub attaches to a
# release). This does not hide it from the repository itself: a clone or a
# browse of the public repository still shows it.
.plans export-ignore
.decisions export-ignore
AGENTS.md export-ignore
