# Build artifacts
target/
*.o
*.app/

# Android Gradle: caches and build outputs are regenerable. Source under
# android-build/ that we DO track: build.gradle.kts files, gradle wrapper,
# AndroidManifest.xml, Kotlin sources under app/src/main/java, and resources
# under app/src/main/res. Everything below is daemon cache or compiler
# intermediates that churn on every build.
android-build/.gradle/
android-build/build/
android-build/app/build/
android-build/local.properties
android-build/.idea/
android-build/captures/

# Doc-example test reports (generated by scripts/run_doc_tests.sh,
# uploaded as a CI artifact in test.yml — never source)
docs/examples/_reports/

# External demo assets (game project assets the user keeps adjacent for
# perry-ui-* manual testing — not perry source). The publish.rs `assets/`
# references are about the *consumer's* project layout, not perry's repo.
/assets/
benchmarks/suite/assets/

# V2.2 per-module object cache (machine-local: keyed by opts + source hash,
# but the cached .o files bake in host CPU features via clang -mcpu=native /
# -march=native, so sharing across machines with different CPUs can produce
# SIGILL at runtime. Always machine-local, always regenerable.)
.perry-cache/

# Compiled test executables in the project root (no extension)
/test_*
/test-*
!/test_*.ts
!/test-*.ts
# Re-include the test source directories
!test-files/
!tests/
!test-parity/
!test-coverage/
# But ignore compiled test binaries (no extension) inside them
test-files/test_*
test-files/test-*
!test-files/test_*.ts
!test-files/test_*.tsx
!test-files/test-*.ts
!test-files/test-*.tsx
!test-files/*/
tests/test_*
tests/test-*
!tests/test_*.ts
!tests/test-*.ts
!tests/test_*.sh
!tests/test-*.sh
!tests/test_copied_minor_fallback_report.py
!tests/test_gc_1090_evidence_report.py
!tests/*/
bench_*
!bench_*.ts
# Polyglot JSON benchmark source files (one per language).
!benchmarks/json_polyglot/bench_*.cpp
!benchmarks/json_polyglot/bench_*.go
!benchmarks/json_polyglot/bench_*.rs
!benchmarks/json_polyglot/bench_*.swift
!benchmarks/json_polyglot/bench_*.kt
!benchmarks/json_polyglot/bench_*.java

# Compiled benchmark binaries in suite/ (01_startup, 05_fibonacci, etc.)
benchmarks/suite/[0-9][0-9]_*
!benchmarks/suite/[0-9][0-9]_*.ts
benchmarks/suite/_perry_failed_stubs.o
benchmarks/suite/*.o
.bench-results/

# Compiled output binaries (catch-all for extensionless files in root)
# Named binaries from example/benchmark compilation
worker
controls
/main
/cli
counter_web
fastify
hello_web
mock-openai-repro
myairank_worker
searchbird
simple-json-test
simple-server
05_fibonacci
07_object_create
10_nested_loops
11_prime_sieve
15_mandelbrot
16_matrix_multiply
index
http-server
http_server_test
demo
auth
config
comments
posts
express_server
fastify_server
hono_server
http_server
searchbird_*
image_conv
issue42_noalloc
enum_repro
no_pragma_test

# Test output
test-parity/output/
test-parity/reports/

# Generated bundles
__perry_js_bundle.js

# Node.js
node_modules/

# npm packaging: rendered package.json + staged binaries/libs
# (rebuilt by scripts/stage-npm.sh; only templates and wrapper sources are tracked)
npm/perry/package.json
npm/perry/LICENSE
npm/perry-*/package.json
npm/perry-*/bin/
npm/perry-*/lib/
npm/perry-*/LICENSE
npm/perry-*/README.md

# Temporary files
tmp/
debug_test.ts
test-hir.txt
response.txt
menu-demo.ts

# Private files
private-*

# Claude Code
.claude/worktrees/
.claude/scheduled_tasks.lock

# OS files
.DS_Store

# IDE
.idea/
.vscode/
*.swp
*.swo

# mdBook output
docs/book/

# scripts/fp_fuzz.mjs failure dumps (regenerable, machine-local)
fp_fuzz_failures/

test-files/.perry-cache/
