__pycache__/
*.py[cod]
*.egg-info/
.pytest_cache/
.mypy_cache/
.ruff_cache/
.coverage
htmlcov/
dist/
dist.bak*/
build/
.venv/
.venv*/
venv/
.env
*.db
*.db-journal
data/jpintel.db
data/*.sqlite*
data/workpapers/
# Root-level graph + sqlite working files (analysis_wave18 KG scratch).
# Side files (-wal/-shm) covered by *.db-wal / *.db-shm above don't apply
# to .sqlite siblings — name them explicitly.
graph.sqlite
graph.sqlite-wal
graph.sqlite-shm
*.sqlite
*.sqlite-shm
*.sqlite-wal
data/competitive_watch/
# adoption PoC scrape output -- not committed until schema is approved
data/adoption_*.jsonl
data/*_ingest_log.jsonl
# downloaded 採択 PDFs live in /tmp/jpintel_adoption_cache/ and must never be committed
jpintel_adoption_cache/
.DS_Store
node_modules/
.vercel

# E2E artifacts (Playwright screenshots on failure) + local env
tests/e2e/_artifacts/
tests/e2e/.env.e2e

# Playwright CI artifact directories (created by pytest-playwright + `playwright test`)
test-results/
playwright-report/
blob-report/

# MkDocs build output — regenerated by CI (pages-preview.yml).
# The landing page (site/index.html, site/styles.css, etc.) stays tracked;
# only the docs/ sub-tree produced by `mkdocs build` is ignored.
site/docs/

# Generated SEO assets — regenerated by scripts/generate_program_pages.py
# + scripts/build_structured.py + scripts/build_llms_txt.py.
# Source of truth lives in src/ + docs/ + data/ + scripts/templates/.
site/programs/*
!site/programs/
!site/programs/index.html
!site/programs/share.html
site/prefectures/
site/structured/
site/llms-full.txt
site/llms-full.en.txt
site/sitemap-programs.xml
site/sitemap-structured.xml
site/sitemap-prefectures.xml
site/sitemap-audiences.xml
# Generated prefecture/industry audience landing pages. Keep root audience
# HTML files such as site/audiences/dev.html tracked.
site/audiences/*/

# Wave-by-wave scratch directories — ephemeral analysis output, not source.
analysis_wave18/
analysis_value/
autonomath_staging/
tmp*/
parts/
pyproject.toml.bak

# MkDocs build cache (rebuilt on every `mkdocs build`)
.cache/

# research/ holds drafts (blog posts, free-form markdown).
# Pre-commit treats it as "scratch pad, not shipped artifact" — exclude from git too.
research/

# Test artifacts (Bandit scan output etc.)
*.bandit.json

# analytics/ — funnel cron output. Directory itself is ignored except
# the daily JSONL rollups (cf_daily.jsonl / pypi_daily.jsonl /
# npm_daily.jsonl + indexnow_log.jsonl) that we want versioned so the
# operator-only /dashboard/analytics.html dashboard has a portable history.
# IndexNow snapshot is a single JSON URL list used by the cron diff —
# also versioned so the cron has a stable previous-run reference.
# Confidence rollups + ad-hoc exports stay out of git.
analytics/*
!analytics/cf_daily.jsonl
!analytics/pypi_daily.jsonl
!analytics/npm_daily.jsonl
!analytics/indexnow_log.jsonl
!analytics/indexnow_snapshot.json
!analytics/brand_community_dashboard.json
!analytics/registry_status_w22.json

# Cloudflare Wrangler cache
.wrangler/

# DB backup / WAL / SHM (prod backup は Fly volume snapshot で管理)
# Covers both dash (`*.db.bak-20260423-133045`) and dot (`*.db.bak.20260423-133045`)
# timestamp styles produced by different backup scripts, plus the SQLite
# side files. sdist was hit by the dot variant once, blocking PyPI publish.
*.db.bak*
*.db.pre_*
*.db.gz
*.db.gz.sha256
*.db-wal
*.db-shm

# macOS
.DS_Store

# IDE / editor local state
.idea/
.vscode/
*.swp
*.swo

# Claude Code local state
.claude/

# Operator loop outputs and raw research captures. Keep scripts/prompts under
# tools/offline versionable, but keep bulky run outputs outside reviews.
# NOTE: changed from `tools/offline/_inbox/` to `tools/offline/_inbox/**`
# (glob form) so that subsequent !-negations can re-include specific paths.
# Git's "if a parent directory is ignored, children cannot be re-included"
# rule applies only to directory-form excludes; glob form lets us punch
# selective holes for CI-referenced modules.
tools/offline/_inbox/**
tools/offline/_outbox/**
tools/offline/_quarantine/**
tools/offline/_done/**
tools/offline/**/__pycache__/
# DEEP-59 acceptance-CI guard module is referenced by .github/workflows/
# acceptance_criteria_ci.yml — must ride into CI (un-ignore this one path).
!tools/offline/_inbox/value_growth_dual/
!tools/offline/_inbox/value_growth_dual/_executable_artifacts_2026_05_07/
!tools/offline/_inbox/value_growth_dual/_executable_artifacts_2026_05_07/deep59_acceptance_ci/
!tools/offline/_inbox/value_growth_dual/_executable_artifacts_2026_05_07/deep59_acceptance_ci/**
*.warc-equiv.tar.gz
*.pdf.bin

# Log files
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Local-only secrets / config overrides
mcp-server.local.json
.env.*
!.env.example

# Common Python / tooling caches not yet listed above
.python-version
.tox/
coverage.xml
.coverage.*
.hypothesis/

# Windows / cross-OS artifacts
Thumbs.db
ehthumbs.db
Desktop.ini

# Editor swap / lock files
*~
.\#*
\#*\#

# Cryptographic material — never commit
*.key
*.pem
*.pfx
*.p12
*.jks
*.keystore
*credentials.json
*credentials.yaml
*credentials.yml
service-account*.json

# Local SQLite WAL/SHM next to repo-root databases
autonomath.db-wal
autonomath.db-shm
jpintel.db-wal
jpintel.db-shm
