# --- OS / editor ---
.DS_Store
*.swp
.idea/
.vscode/

# --- Python ---
__pycache__/
*.py[cod]
*.egg-info/
.eggs/
.pytest_cache/
.ruff_cache/
.mypy_cache/
.coverage
.coverage.*
coverage.xml
htmlcov/
.venv/
venv/
dist/
build/

# --- Node / TS ---
node_modules/
.next/
.turbo/
*.tsbuildinfo
out/

# --- Generated token outputs are committed? No — regenerated in CI ---
packages/tokens/dist/
apps/web/.next/

# --- Local secrets (never committed; enforced by hooks) ---
.env
.env.*
*.pem
*.key

# --- SBOM / scan artifacts (regenerated in CI) ---
sbom*.json
sbom*.xml
trivy-results.*

# Next.js generated
next-env.d.ts

# hypothesis example database
.hypothesis/

# --- Local operator captures (tools/capture, tools/census, tools/registry, telemetry) ---
# Everything under the repo-root captures/ is local operator output — field-capture runs, the
# marketplace census index/snapshots, the Phase-0 registry (SQLite + object store), and telemetry
# reports — all large, host-identifying, and regenerated. Kept local, never committed. (Verified
# bundles are published deliberately into apps/console/fixtures/captures/, a different tracked path.)
/captures/

# --- Web e2e ephemeral fixture (packages/platform-api/tools/e2e_seed.py + the web-e2e CI job) ---
# The seeded SQLite DB, the captured E2E_BUNDLE_ID line, and the default local object store are
# recreated on every run (production uses GCS via VOLTRY_OBJECT_STORE_BUCKET, not this dir).
e2e.db
seed.out
voltry-bundles/
