/target
*.result.json
*.chart.svg
*.report.html
*.report.json
*.table.csv
# `kshana --study <suite>` writes <suite>.study.json + .study.html next to the manifest.
# Engine output, like the four above: two such files were once committed under scenarios/
# (stamped 0.20.0, every FoM empty), so following the README's own study command dirtied
# the tree and blocked the push gate.
*.study.json
*.study.html

# Compiled Java oracle drivers under test fixtures: the .java source IS committed
# (it generates the pinned reference vectors); the .class build output is not.
tests/fixtures/**/*.class

# Paper study artifacts: the byte-deterministic study JSONs the papers cite ARE
# committed here for reproducibility (each is regenerable from its open generator,
# e.g. `cargo run --release --example optimism_study -- paper-artifacts/optimism-study.json`).
# Any other transient output written under paper-artifacts/ stays ignored.
/paper-artifacts/*
!/paper-artifacts/optimism-study.json
!/paper-artifacts/resilience-study.json

# Python packaging / build artifacts (maturin)
/dist
*.so
*.pyd
__pycache__/
*.egg-info/
.venv/

# WebAssembly package (wasm-pack output)
/pkg

# Site build outputs (generated/copied by web/build.sh and the Pages workflow): the
# WebAssembly package, its copy next to the Studio, and the scenarios staged at the old
# single-page site's URL. web/assets/ is site content and is tracked.
/web/pkg
/web/scenarios
/web/playground/pkg
# The site's own copies of engine run reports (the Missions page links them) are site
# content, not engine output: keep them despite the *.report.html rule above.
!/web/assets/**/*.report.html

# ANISE frame cross-validation crate: its build dir, downloaded SPICE kernels, and
# generated reports. The crate's source + Cargo.lock ARE committed; these are not.
/xval/anise-frames/target
/xval/anise-frames/kernels/*.bpc
/xval/anise-frames/report.json
/xval/anise-frames/report.md

# ANISE DE-grade lunar-OD cross-validation crate: build dir, downloaded DE440 kernels
# (SPK + lunar PA BPC), and generated reports. Source + Cargo.lock ARE committed; these are not.
/xval/anise-lunar-od/target
/xval/anise-lunar-od/kernels/*.bsp
/xval/anise-lunar-od/kernels/*.bpc
/xval/anise-lunar-od/report.json
/xval/anise-lunar-od/report.md

# ANISE DE-grade Mars-OD cross-validation crate: build dir, downloaded DE440 / Mars-system
# kernels, and generated reports. Source + Cargo.lock ARE committed; these are not.
/xval/anise-mars-od/target
/xval/anise-mars-od/kernels/*.bsp
/xval/anise-mars-od/kernels/*.bpc
/xval/anise-mars-od/report.json
/xval/anise-mars-od/report.md
/xval/anise-mars-od/lighttime_report.json
/xval/anise-mars-od/report_lighttime.md

# ANISE service-volume geometry cross-validation crate: build dir, downloaded kernels, and
# generated reports. Source + Cargo.lock ARE committed; these are not.
/xval/anise-service-geometry/target
/xval/anise-service-geometry/kernels/*.bsp
/xval/anise-service-geometry/kernels/*.bpc
/xval/anise-service-geometry/report.json
/xval/anise-service-geometry/report.md

# MCP server crate: build dir only. Source + Cargo.lock ARE committed.
/mcp/kshana-mcp/target

# JetBrains plugin (Gradle): build output + caches (incl. the downloaded IntelliJ SDK
# sandbox under .intellijPlatform). Source + the Gradle wrapper (gradlew, gradle/wrapper/*)
# ARE committed.
/ide/jetbrains/.gradle
/ide/jetbrains/.intellijPlatform
/ide/jetbrains/.kotlin
/ide/jetbrains/build

# Full-gate receipt written by scripts/gate.sh and checked by scripts/check-gate-receipt.sh
# before every push. Machine state about one run on one machine — which commit was tested,
# how long it took, how many binaries ran — not repository content, and meaningless on any
# other machine or commit. Never committed.
/.gate-receipt.json

# macOS finder metadata
.DS_Store

# Real downloaded GNSS attack datasets (large; never committed to the public repo).
# Only derived, byte-deterministic study artifacts (above) are committed; the raw
# recordings stay local.
/realdata-cache/
