# Loom runtime state (don't commit these)
.loom-in-use
.loom-checkpoint
.loom/.daemon.pid
.loom/.daemon.log
.loom/daemon.sock
.loom/daemon-state.json
.loom/daemon-loop.pid
.loom/daemon-metrics.json
.loom/loom-source-path
.loom/[0-9][0-9]-daemon-state.json
.loom/stuck-history.json
.loom/alerts.json
.loom/issue-failures.json
.loom/health-metrics.json
.loom/interventions/
.loom/mcp-command.json
.loom/activity.db
.loom/claims/
.loom/signals/
.loom/status/
.loom/progress/
.loom/retry-state/
.loom/diagnostics/
.loom/guide-docs-state.json
.loom/metrics_state.json
.loom/manifest.json
.loom/stuck-config.json
.loom/metrics/
.loom/usage-cache.json
.loom/claude-config/
.loom/logs/
.loom/spawn-loop-state.json

# Build artifacts
# Compiled native extension (rebuilt locally via `uv run kct build-native`)
*.so

# Python
__pycache__/
*.py[cod]
.pytest_cache/
.coverage
.coverage.*
*.egg-info/

# Test byproducts
# KiCad regenerates project-local state (.kicad_prl) when tests open the fixture
tests/fixtures/projects/*.kicad_prl

# Board render artifacts (generated by `kct render`, Epic #3674)
boards/*/output/renders/
boards/*/*/output/renders/

# Board metrics (generated at runtime by `kct board-metrics`, Epic #3674)
boards/*/output/board.json
boards/*/*/output/board.json
.loom/sweep-checkpoint/

# Local credentials (BYO API keys -- issue #4118). NEVER commit real keys.
.env
.env.*
!.env.example
.loom/worktrees/
.loom/state.json
.loom/*.log
.loom/*.sock
