__pycache__/
*.egg-info/
dist/
.venv/
site/node_modules/
site/dist/
.pytest_cache/
.ruff_cache/

# Wrangler local state (Cloudflare Pages deploys, scripts/deploy-site.sh)
.wrangler/

# Fetched open PDK data (scripts/fetch-pdks.sh) — tracked: pdks/README.md only
pdks/*
!pdks/README.md

# Cloned canary block repos (scripts/ingest-canary.py, issue #62) — not
# tracked; only the emitted blocks/<slug>/output/layout.json is checked in.
.cache/canary-repos/

# klt render output (build artifact, not checked in — see docs/cli/render.md).
# The gallery content pipeline (issue #651/#942) checks in the all-layers
# `overview.png` composite, every non-empty per-layer PNG, and each block's
# zoomed "center crop" composite (`renders/center_crop/overview.png`) — a
# handful of ~23-47 KB PNGs per block, so this is not a repo-size concern.
# Per-layer PNGs inside a crop subdirectory (and any `renders/` directory
# outside `blocks/*/output/`) stay ignored — only each crop's own composite
# overview is tracked.
renders/
!blocks/*/output/renders/
blocks/*/output/renders/*
!blocks/*/output/renders/overview.png
!blocks/*/output/renders/*_*.png
!blocks/*/output/renders/center_crop/
blocks/*/output/renders/center_crop/*
!blocks/*/output/renders/center_crop/overview.png

# Artifacts a request-taking verb writes next to its request document
# (`klt sim`, `klt synthesize`, `klt functional-verification`) — running
# examples/ in place must not stage generated build dirs/logs/results.
.klt/

# Scratch netlists the example probe scripts write beside their inputs for
# sensitivity/invisibility cross-checks (examples/design-pipeline/
# mom_current_carrying_probe.py) — intermediate, never evidence.
.klt-*.spice

# Cargo build output for the Rust engines under native/ (issue #718's
# native/mom/ is the first). Cargo.lock IS tracked -- these crates build a
# shipped extension module, so a reproducible dependency set is wanted.
native/*/target/

# macOS Finder droppings
.DS_Store

# Claude Code agent worktrees (mirrors .loom/worktrees/ below) and
# machine-local settings overrides
.claude/worktrees/
.claude/settings.local.json

# Repo Skills machine-local install metadata (absolute source path + timestamp)
.claude/skills/repo/.install-local.json
.claude/skills/repo/logs/
# >>> loom-managed (do not edit) >>>
# Loom runtime state (don't commit these)
.loom-in-use
.loom-checkpoint
.loom-managed
.no-changes-needed
.snapshots/
.loom/.daemon.pid
.loom/.daemon.log
.loom/daemon.sock
.loom/daemon-loop.pid
.loom/daemon-metrics.json
.loom/loom-source-path
.loom/spawn-loop-state.json
.loom/spawn-loop.pid
.loom/stop-spawn-loop
.loom/issue-failures.json
.loom/interventions/
.loom/worktrees/
.loom/worktrees-local/
.claude/worktrees/
.loom/state.json
.loom/mcp-command.json
.loom/activity.db
.loom/claims/
.loom/locks/
.loom/signals/
.loom/status/
.loom/retry-state/
.loom/exit-codes/
.loom/sweep-checkpoint/
.loom/sweep-run/
.loom/stats/
.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/tokens/
.loom/accounts.env
.loom/account-health.json
.loom/account-health.lock
.loom/CANARY
.loom/*.log
.loom/*.sock
.loom/*.tmp
.loom/*.bak
.loom/.install.lock
.loom/logs/
.loom/.resync-in-progress
# <<< loom-managed <<<
