
# Use bd merge for beads JSONL files
.beads/issues.jsonl merge=beads

# Keep executable scripts runnable when cloned on Windows.
*.sh text eol=lf

# Mailbox-format patch archives intentionally preserve the source diff's blank
# context lines and indentation; do not reinterpret those payload bytes as this
# repository's whitespace errors.

# Probe transcripts are immutable structured capture envelopes. Preserve their
# exact JSONL bytes, including encoded prompt and runtime event content.
evals/skill-probes/*/fixtures*/control-*.txt -text -whitespace
evals/skill-probes/*/fixtures*/treatment-*.txt -text -whitespace

# Probe manifests bind these working-tree inputs byte-for-byte. Force one
# checkout representation so the same Git blobs replay on every platform.
evals/skill-probes/*/probe.json text eol=lf
evals/skill-probes/*/question.md text eol=lf
evals/skill-probes/*/treatment-prelude.md text eol=lf
evals/skill-probes/*/fixtures*/capture-contract.json text eol=lf
skills/*/SKILL.md text eol=lf
scripts/lib/probe-fixture-metadata.py text eol=lf

# Generated/derived artifacts — union-merge to kill textual re-conflicts during
# multi-PR drains (their canonical content is restored by scripts/regen-all.sh).
# Council 2026-06-06 (ag-bdg1). NOTE: cli/embedded/** is //go:embed'd and
# skills-codex/** ships in the tarball — they MUST stay committed; union-merge
# only avoids spurious conflict markers, regen produces the authoritative bytes.
registry.json                          merge=union
**/.agentops-generated.json            merge=union
skills-codex/.agentops-manifest.json   merge=union
docs/contracts/context-map.md          merge=union
cli/docs/COMMANDS.md                   merge=union

# Tracked runtime JSONL logs (next-work, findings/registry, provenance ledger) are
# DELIBERATELY NOT union-merged (age-uqj). They are not pure append-logs: next-work
# entries are rewritten in place (markEntryConsumed / markItemConsumedOwned flip
# consumed/claim_status) and the ledger is a prev_hash chain — union-merge would
# either resurrect consumed/claimed work or break the chain. A genuine divergence
# on these files must surface as a real conflict, not be silently merged. The
# "git pull --rebase fails on dirty runtime logs" friction is fixed instead by the
# repo-local rebase.autoStash set in scripts/install-pre-push-gate.sh.
