# Operator artifacts (must NOT land in the public tree — see v4.0.1 scrub)
.mcp.json
.ledatic/
.fleet/
*.pre-*
*.bak[0-9]*

# Build / tool artifacts
target/
.claude/
.wrangler/
.vscode/
node_modules/
# runtime/ holds build objects (llm.o); runtime/arm64/ is the ARM64 runtime's source.
**/runtime/*
!/runtime/arm64/
archive/
# Whitelist exception: docs/archive/ holds dated retros / handoffs /
# closed bug write-ups that we want browsable in git history.
!docs/archive/
!docs/archive/**

# OS + editor
*.DS_Store
*.bak

# Python
__pycache__/
*.pyc
*.pyo

# Rail local artifacts
rail_native_llm
rail_native.new
*.o
*.log
doubled.txt
numbers.txt

# Models + weights live in Ledatic-Empire/rail-training or on disk —
# the compiler repo tracks none of them, cards included.
models/
best.weights
*.safetensors
*.jsonl

# Private subtree — nested repo at Ledatic-Empire/zemog
tools/uav/

# Training data / pipeline working dirs — Ledatic-Empire/rail-training
# owns all of it, published bundles included.
training/
*-resume.tar.gz
flywheel/

# Site publish output (Ledatic-Empire/ledatic-site is the source of truth)
# (nothing at this level — site2030 extraction removed the local copy)

# Working dirs not part of the shipped tree
tools/autoresearch_results/
tools/rail_lora/

# Attestation evidence — the tree keeps the *attestations*, not the
# artifacts they sign.  selfhost binaries are byte-identical to the seed
# `rail_native` when the fixed point holds; release binary + source are
# recoverable from the git tag (`git show vX.Y.Z:tools/compile.rail`).
# So HEAD carries only the .attestation.json + index.json under each
# release; the signed bytes themselves stay out of the tree.
selfhost/*/rail_self_1
selfhost/*/rail_self_2
releases/**/rail_native
releases/**/compile.rail

flywheel-local/

# Backup binaries (canonical rail_native is tracked; backups are scratch)
rail_native.*
rail_native_*
# But DO track release attestation JSONs under releases/.
!releases/**/rail_native.attestation.json

# .bak with version suffix (extends *.bak to catch .bak2, .bak3, etc.)
*.bak[0-9]*


# Transient run outputs and comparison scratch
runs/
compare/

# Audit scratch (experimental diagnostics)
docs/audits/


# rail trace sidecars (emitted by tools/trace/rail_trace.rail)
*.trace.json

# Garmin scratch — Python helpers + FIT/GPX/TCX exports (gen-1 Instinct dumps)

# Bisect dump dirs (notes/bisect_*/ accumulate; tracked notes/ entries still fine)
notes/bisect_*/

# internal ops/strategy/client audits — keep private
/docs/plans/

