# Node
node_modules/

# Build output
.next/
apps/marketing/.velite/
dist/
build/

# Env files
.env*
.dev.vars
!.env.example
!.env.*.example
!.env.sample

# Logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
logs/
# Allow dashboard logs feature (UI page, not actual log files)
!apps/dashboard-spa/src/components/logs/
# Allow Fern docs logs section (documentation pages, not actual log files)
!fern/docs/pages/user-guide/logs/
# Allow the generated SDK cores' logs API resource (the /v1/logs client, not log files)
!packages/*-sdk/**/logs/
# Allow Fern-generated Python SDK logs resource (LogsClient module, not log files)
!packages/python-sdk/runtype/_generated/logs/
# Allow vendored OpenTelemetry protobuf modules for the OTLP logs signal.
!packages/execution-ingest/src/gen/opentelemetry/proto/collector/logs/
!packages/execution-ingest/src/gen/opentelemetry/proto/collector/logs/**
!packages/execution-ingest/src/gen/opentelemetry/proto/logs/
!packages/execution-ingest/src/gen/opentelemetry/proto/logs/**

# Smoke test results
.github/smoke-tests/results/
/.cold-do-lab/

# OS
.DS_Store
Thumbs.db

# Core dumps (root level only)
/core
/core.*

# Editor
.vscode/
.idea/
*.swp

# pnpm
.pnpm-store/
.pnpm-debug.log*

# Turborepo
.turbo/

# Misc
*.local 
.vercel
.worktrees/
becomevocal/
apps/api/backfill-prod-report*.json
apps/dashboard-spa/public/illustrations.zip

# Cloudflare Workers
.wrangler/
wrangler.toml.bak
.dev.vars.bak

# Test coverage
coverage/

# Typescript
*.tsbuildinfo

# Bruno API Doc Environments
apps/api/bruno/environments/*

# Python
__pycache__
.ruff_cache
.mypy_cache/
.pytest_cache/
.mcp.json

# CLI local state files
.runtype/

# Claude Code - ignore ephemeral/machine-local state, keep config and instructions
.claude/*
!.claude/workflows/
!.claude/settings.json
!.claude/agents/
!.claude/commands/
!.claude/review/
!.claude/rules/
!.claude/skills/
!.claude/CLAUDE.md
fern/openapi.json

# SPA apps: non-secret Vite build config (publishable keys + URLs only)
!apps/dashboard-spa/.env.development
!apps/dashboard-spa/.env.staging
!apps/runtown/.env.development
!apps/runtown/.env.staging

# Security review run artifacts (intermediate scratch)
docs/security/.runs/

# Runner image build-context copies (root lockfile + vendor/ tarballs), staged
# just-in-time by infra/github-runners/deploy.sh + the Deploy GitHub Runners
# workflow for the image's baked pnpm-store seed layer (worker-pool/Dockerfile).
# Never committed.
infra/github-runners/worker-pool/pnpm-lock.yaml
infra/github-runners/worker-pool/vendor/

# Operational backups written by apps/api/scripts/migrate-model-ids.ts --execute.
# Rollback inputs — keep local, never commit.
model-migration-backup-*.jsonl

# Build-once deploy bundle output (scripts/ci/build-deploy-bundles.mjs).
# Per-worker wrangler --dry-run --outdir trees + the build manifest; CI uploads
# the manifest as an artifact, nothing here is committed.
.deploy-bundles/

# Overrides written beside a classic wrangler config so a `--no-bundle`
# invocation resolves modules from the bundle dir, then removed in a finally
# (scripts/ci/deploy-from-bundle.mjs). Globbed because an interrupted run
# leaves one behind carrying a machine-specific absolute bundle path.
wrangler.*.generated.toml
