node_modules/
dist/
.vite/
.wrangler/
# Playwright run artifacts (examples/*/e2e specs) and ad-hoc UI screenshots.
test-results/
playwright-report/
examples/*/screenshots/
_site/
# HTML TypeDoc output for the Pages site — a CI build artifact assembled into
# _site/api/. The markdown counterpart (tools/docs/api/) stays committed for
# in-repo browsing; this HTML build is regenerated on every Pages deploy.
tools/docs/api-html/
/target/
/rust_analyzer/
tools/schemas/
tools/src/data/bundle.generated.ts
tools/src/share/registry.generated.ts
.DS_Store
*.log
rube-goldberg-output.txt

# _audit/ is the DSL-authoring worklist (#21). Keep the human-readable summaries
# (coverage.json, summary.md, proposed/*.md) but ignore the bulky, churn-prone
# machine-generated proposal/input JSON — it regenerates from the author-* tools.
/data/_audit/author-input/
/data/_audit/proposed/*.json
/data/_audit/worklist.json

# Fuzz-mode regression repros from the cross-impl parity differ. The directory
# itself is kept (via .gitkeep) so the differ has somewhere to write; the JSON
# repros are ephemeral — promoting one to the permanent corpus is a deliberate
# act and lands under conformance/.
/tooling/parity/regressions/*.json

# Python bytecode caches from running the differ locally.
__pycache__/
*.pyc

# Python package dev artifacts (python/ is the wh40kdc PyPI package).
/python/.venv/
/python/dist/
.pytest_cache/
.mypy_cache/
.ruff_cache/

# IP-sensitive working material (source PDFs of upstream rulebooks, extracted
# prose, scratch notes) that must never be committed. Anything inside this
# directory stays local.
/_private/
.env
