# Byte-exact benchmark inputs.
#
# `bench/rot/select.py` pins the corpus frame by sha256, and that hash is the
# whole reproducibility argument: a third party with these bytes derives the
# same repository ordering, with no API access and no trust in us. Git's EOL
# translation breaks that — a Windows checkout rewrote the file's single LF to
# CRLF and the hash check correctly refused it. Marking the frame binary keeps
# the committed bytes verbatim on every platform, so the anchor is genuinely
# platform-independent rather than platform-independent-on-Linux.
bench/rot/frame/*.json -text

# Same rule, same reason, one directory over. `bench/retrieval`'s corpora are
# sha256-pinned inside every result artifact, and 2026-07-30's prefilter arm
# added the first test that re-hashes them on every platform rather than only
# where the corpus happens to be downloaded. Windows checked them out with
# CRLF and the check correctly refused: the bytes really were not the bytes
# that were scored. Marking them binary is the fix, not relaxing the check —
# a corpus hash that is allowed to differ per platform is not an anchor.
bench/retrieval/*.jsonl -text

# The integrity benchmark's corpora, same rule. Every raw file, result and
# summary pins its corpus by sha256 (`corpus_sha256`), `run.py score` refuses
# a raw file whose sha is not the corpus file's, and the v1 splits and their
# operating points are sealed by sha256 in bench/integrity/v1/SEALS.json. A
# CRLF checkout of corpus.json would make every committed raw file refuse on
# Windows, and the v0 re-score test runs there. The rot artifact the
# integrity summaries carry is pinned the same way, by `world_grounded.sha256`
# in every committed summary.
bench/integrity/corpus.json -text
bench/integrity/v1/*.json -text
bench/rot/results/multirepo-anchored-2026-07-30.json -text

# The write review's judge prompt, same rule. Its sha256 is stamped into
# every chat-review export and result and sealed in
# bench/integrity/v1/SEALS-review.json, and sealing is refused unless a dev
# result's recorded sha equals the committed file's; a CRLF checkout would
# make that sha differ per platform.
bench/decisions/prompts/*.md -text

# The golden v8 fixture, byte for byte. `tests/test_export_mirror.py` pins
# the mirror's renderers by comparing their output with every memory,
# tombstone and episode file under it, and the migration tests compare the
# mirror of a migrated copy with it. The files are what the v8 writers wrote
# at 8.0.0, LF endings included; a Windows checkout with core.autocrlf
# rewrote them to CRLF, which no writer produced, and every one of those
# comparisons failed on that leg. The rule covers the whole tree, the
# dot-directories and the sidecars with it, so a fixture file added later is
# covered too.
tests/fixtures/v8/store/** -text

# DELIBERATELY ABSENT: any `*.py diff=python` rule.
#
# Git's default funcname heuristic — not the Python driver — is what produces
# the `@@ ... @@` section headings this repository's history contains, and
# `bench/rot`'s claim-level detector is documented against that behaviour. It
# does not READ those headings (they label a method-body edit inside `Store`
# as `class Store:`, which would make a heading-keyed detector a body-churn
# amplifier), but the measurements and the reasoning in bench/rot/README.md
# describe the default heuristic's output. Turning on the Python driver would
# silently change what a future reader sees when they check that reasoning
# against `git log -p`.

# Benchmark corpora, raws and results are hashed and byte-pinned by tests;
# never convert their line endings on checkout (the Windows leg did).
bench/**/*.json -text
bench/**/*.jsonl -text
