.DS_Store
.idea
*.log
tmp/
*.backup
requirements.txt.backup

# Local secrets / API tokens
.env
.env.*
!.env.example

*.py[cod]
__pycache__/
*.egg
*.egg-info/
build
htmlcov
.coverage
.coverage.*
coverage.xml
# Python package build artifacts
src/python_run/build/
src/python_run/dist/

/data/
/build/
/build-*/
/local/
/dist/
/lib/
/install/
/download/
/p/
/o/
/f/
/s/
*.so

.venv/
lightning_logs/

# Claude settings
# Default: ignore everything under .claude/ ...
.claude/*
# ... but keep shared automation (hooks, skills, settings, commands).
# Personal/runtime files (settings.local.json, worktrees/, scheduled_tasks.lock,
# .coverage, etc.) remain ignored via the leading `.claude/*` rule.
!.claude/commands/
!.claude/hooks/
!.claude/skills/
!.claude/settings.json
!.claude/README.md
settings.local.json

# Generated audio files
*.wav
!test/**/*.wav

# Test artifacts
test_piper/
test_build/
test_windows_build/
test_results/
test_ci_binaries/
build_log.zip
# CMake/CTest auto-generated (do not commit)
/Testing/
# Root test files (should be in src/cpp/tests or src/python/tests)
/test_*.cpp
/test_*.c
/test_*.py
/test_*.sh
/test_*
!test/

# Package build artifacts
nupkgs/
publish_test/
# Test logs
*.log

# Benchmark results
benchmark_results*.json
streaming_comparison_results.json

# Windows build artifacts
*.dll
*.exe
windows_build_artifacts/
CLAUDE.md

# Rust build artifacts
src/rust/target/
src/rust/piper-python/target/
src/rust/piper-python/Cargo.lock

# iOS / Swift Package Manager build artifacts
*.xcframework/
*.xcframework.zip
build-g2p-ios/
.build/
.swiftpm/
*.xcodeproj/
DerivedData/

# WebAssembly temp directories
src/wasm/openjtalk-web/temp/
src/wasm/openjtalk-web/tools/

# Debug and development scripts
scripts/debug/
debug_*.py
test_phoneme*.py
!src/python_run/tests/test_phoneme*.py
verify_*.py
analyze_*.py
check_*.py
# `scripts/` holds the repo's contract gates, not ad-hoc debug scripts,
# so un-ignore the whole directory rather than maintaining a per-file
# allowlist. That list had grown to 72 entries and silently swallowed
# every newly added gate: `git add -A` skipped the file, the commit
# looked fine locally, and CI failed with 'No such file or directory'.
!scripts/check_*.py
!scripts/action_pins_baseline.txt
!scripts/action_sha_baseline.json
!scripts/verify_model_checksums.py
!scripts/verify_rekor_releases.py
# Workflow-automation wave2 で追加した check スクリプト群
# Wave 5 — workflow automation 第 3 波 で追加した check スクリプト群
# M1.1 — cancelled / skipped baseline alarm gateway
# M1.2 — migration guide cross-ref lint
# M1.3 — first-PR fast lane (gate neutralizer + weekly health)
!scripts/first_pr_fast_lane.py
!scripts/first_pr_health.py
# Audio MOS proxy metrics (PESQ / STOI / UTMOS / Whisper WER)
!scripts/audio_quality_metrics.py
# Cross-runtime audio byte parity (SHA256 / RMS / SNR tiers)
!scripts/audio_parity.py
# Public ABI snapshot diff (C / Swift / Kotlin)
!scripts/diff_public_abi.py
# Model card / license attribution generator (data-sources.yml driven)
!scripts/generate_model_card.py
# Typosquatting watch (registry Levenshtein + homograph scan)
# Forward-compat fuzz for loanword / PUA JSON schema
!scripts/fuzz_forward_compat.py
# Phoneme timing monotonicity property test
# CHANGELOG keep-a-changelog format validator (proposals §3.7 Tier S #1)
# README heading tree parity (proposals §3.7 Tier S #2, informational)
# M2 spec sync gates (T-005 / T-006 / T-008)
# Doc examples audit (T-009)
# Swedish per-word LID sync gate (Issue #539)
# HF Space deploy gates (sdk_version drift / frontmatter / post-deploy runtime)
!scripts/verify_hf_space_runtime.py
# GitHub Pages post-deploy 404 detection gate
!scripts/verify_pages_assets.py
# Post-rename hardening gates (Issue #590 / follow-up to PR #598)
create_comprehensive_*.py
add_missing_*.py
retrain_*.py
comprehensive_*.py
tmp_*.py
tmp_*/

# Training datasets and downloaded models
datasets/
models/

# Local working files
checkpoints/
output/
output-*/
dataset-*/
libritts-r/
moe-speech-*/
css10-*/
downloads/
hf_upload/
hf_readme.md
rebuild_cache.py
upload_webdataset.py
bench_mb_istft.py
pip-test/
upiper_comparison_samples/
compare_phonemes.txt
phoneme_map.txt
training_phonemes.txt
id_check.txt
sh_check.txt
generate_upiper_samples.py
nul
test/models/tsukuyomi-chan/
docs/development/usability-issues-2026-03.md
src/rust/target/*

# Kotlin G2P AAR (Issue #388): Gradle copies fixtures + native .so at build time.
# Ignore the Gradle-generated entries individually so the static
# zh_en_loanword_matrix.json mirror (committed for the sync gate, Issue #384
# follow-up) can sit alongside them without being swept up by a directory ignore.
# Note: a parent-directory ignore plus a `!file` re-include does NOT work in
# git, hence the file-by-file ignore.
android/piper-plus-g2p/src/androidTest/assets/g2p_fixtures/phoneme_test_cases.json
android/piper-plus-g2p/src/androidTest/assets/g2p_fixtures/phoneme_test_cases_golden.json
android/piper-plus-g2p/src/main/jniLibs/
android/piper-plus-g2p/.cxx/
android/piper-plus-g2p/build/
android/.gradle/

# Android SDK path — Gradle auto-generates this per machine on first build.
# Machine-local absolute path, must never be committed.
android/local.properties

# Swift Package Manager: Package.resolved is auto-generated when SPM
# resolves dependencies. piper-plus ships libraries (PiperPlus /
# PiperPlusG2P), not an app, so we don't pin transitive dependency
# versions for downstream consumers — they resolve their own.
Package.resolved
.lycheecache

# Integration test fixtures generated at CI time (build_fixture.py)
tests/fixtures/mb_istft_speaker_embedding/model.onnx
tests/fixtures/mb_istft_speaker_embedding/model.onnx.json
# ort optimized-model cache (sibling to any .onnx the runtime loads)
*.opt.onnx
*.opt.onnx.ok

# -----------------------------------------------------------------------------
# Mutation testing artifacts (manual / weekly CI でのみ生成、commit しない)
# -----------------------------------------------------------------------------
# Python  : mutmut が生成する on-disk cache / report
# Rust    : cargo-mutants が `mutants.out/` 配下に diff + log を吐く
# C# (.NET): Stryker.NET の HTML/JSON report と内部 sandbox。
# 詳細: docs/spec/mutation-testing.md
.mutmut-cache
.mutmut-cache/
mutants.out/
mutants.out.old/
# Stryker.NET reports (any depth)
**/StrykerOutput/
