# Environment and secrets
.env
.env.*
!.env.example

# Python
__pycache__/
*.py[cod]
*$py.class
.venv/
.venv-local/
venv/
*.egg-info/

# Database
*.db
*.db-journal
*.db-shm
*.db-wal
*.sqlite

# Node
node_modules/
frontend/node_modules/

# Build outputs
frontend/dist/
frontend/.dist_bak/
frontend/dist.bak*/
dist/
build/
*.tsbuildinfo
*.d.ts
!frontend/src/**/*.d.ts
frontend/vite.config.js

# IDE
.vscode/
.idea/
*.swp
*.swo

# Runtime artifacts (service stdout/stderr captures from NSSM, temp paths)
.runtime-logs/
.nssm-path.tmp

# Logs
*.log
*.out.log
*.err.log
run_log.txt
uvicorn*.log

# OS
.DS_Store
Thumbs.db

# Cache files
*_cache.json
*.json.bak

# Notification config (may contain SMTP password) + local outbox fallback
notification_config.json
notification_outbox.log

# Backup files
backups/

# Scraped data (large JSON files)
scraped_*.json

# Operator scratch dir — SAM Data Bank CSV drops, USA.gov HTML cache,
# inline-JS extracts for parse-check, etc.
tmp/

# Plan 7.19 — Win-probability model pickles (created by train())
models/*.pkl

# Raw dashboard captures (regenerable via scripts/capture_screenshots.py); only committed .webp are served
static/screenshots/*.png

# Generated e2e run reports (test code is committed, reports are not)
tests/e2e/e2e_*report*.json

# Editor/backup scratch copies of static pages
*.prenav

# Sales/capture artifact workspace (binary briefs + deck build; not app code).
# Anchored to the repo root -- an unanchored "capture/" also matched
# frontend/src/features/capture/, silently excluding the real Capture
# Pipeline page's source from git entirely (found 2026-07-11).
/capture/

# Manual hotfix backup/scratch copies (never-cleaned accumulation, added 2026-07-08)
*.bak
*.bak-*
*.qabak
*.qabak-*
.bak_aic/
_blogbak-*/

# Bulk downloaded reference data (regenerable, not source)
data/sam/
data/geoip/
data/usaspending_bulk/

# Marketing/media assets (not app code, large binaries)
ad/
sales_deck/

# Outreach/contact CSVs (contain real prospect PII, not source)
scripts/_fedfinder_outreach_contacts*.csv
data/gsa_elibrary/

# Agent-tool state dirs (local scratch, never source)
.shannon/

# local analysis artifacts (never commit)
.ua/
.superpowers/
BUILD_SHA

# Generated gzip sidecars for the large static bundles. These were tracked
# until 2026-08-08, which meant every edit to app.js/site.js/three.* left a
# committed .gz that no longer matched its source, and `gzip -9 -kf` stamped
# the source mtime into the header so no two machines produced the same bytes.
# scripts/build_static_sidecars.py now regenerates them deterministically in
# the Docker image build and in every deploy, rollback and staging run.
static/**/*.gz

# Sidecar staging dir used by `build_static_sidecars.py --output-dir`
.build/

