# Python
__pycache__/
*.py[cod]
*.egg-info/
dist/
# Root-anchored: only the repo-root packaging dir, NOT the real
# `reg_monabundle/src/reg_monabundle/build/` source package (the bundle
# amalgamator). `__pycache__/` above still ignores byte-code anywhere.
/build/

# Environments
.venv/
.env
.envrc

# Tools
.ruff_cache/
.pytest_cache/
.mypy_cache/
.hypothesis/
node_modules/
# Cargo workspace build output (root Cargo.toml)
/target/

# IDE
.idea/
.vscode/
*.swp

# OS
.DS_Store
Thumbs.db

# Project
.tmp/
# Stable host-local accepted catalog-input repository. It is deliberately outside
# disposable reports/worktrees and never has a product-Git or remote publication path.
/.local/catalog-inputs/
# Separate local input candidates contain copied source evidence, not product files.
/.local/worktrees/
# Private accepted inputs and retained compiler proofs stay local.
/.local/private-swecov-candidates/
/.local/holdings-02-builder-compilation/

# Input data (SCB CSVs, Socialstyrelsen metadata, source PDFs — not committed).
# Listed per-subdirectory so the maintainer-curated classifications/ folder
# can stay tracked without an exclude/re-include dance (git doesn't traverse
# into a parent dir that's been ignored at the directory level).
reg_meta_build/input_data/*
!reg_meta_build/input_data/classifications/
# Thin curated providers (#422): each agency's hand-authored <provider>.toml IS
# the committed source delivery (no machine export exists), so its dir stays
# tracked. One exception line per curated agency — NOT a broad `*/` exception,
# which would start tracking the untracked SCB/Socialstyrelsen/swecov seed dirs.
!reg_meta_build/input_data/Folkhalsomyndigheten/
!reg_meta_build/input_data/Forsakringskassan/
!reg_meta_build/input_data/Lakemedelsverket/
!reg_meta_build/input_data/Pliktverket/
!reg_meta_build/input_data/Riksarkivet/
!reg_meta_build/input_data/UMU/
# Canonical-SCB curated content (#444) — committed TOML + value-set CSVs, not an
# agency dir but the same tracked-committed-source rule.
!reg_meta_build/input_data/scb_canonical/
# swecov/ stays untracked (confidential SWECOV-internal delivery documents),
# but its README.md and build_catalog.py (the committed catalog generator)
# are force-tracked via `git add -f` (2026-09-02) — tracked files are
# unaffected by these rules, so no exception line is needed.
# Under classifications/ only the normalized CSVs (+ manifest.json) are tracked.
# The raw SOS source workbooks the fetch script downloads are not — they
# regenerate from scripts/fetch_sos_classifications.py.
reg_meta_build/input_data/classifications/sos/*.xls
reg_meta_build/input_data/classifications/sos/*.xlsx
# landskoder.csv is fetched but deliberately not seeded (see
# reg_meta_build/CLASSIFICATIONS.md); a bare fetch run regenerates it —
# keep it out of status noise.
reg_meta_build/input_data/classifications/sos/landskoder.csv

# mock-data-wizard generated output
mock_data/
mock_output/
mdw_runner.py
mdw_step1_discovery.json
mdw_step2_config.json
mdw_step3_stats.json
extract_stats*.R

# mock-data-wizard runtime artifacts (transient — fcntl sidecar, run logs)
.mock_data_config.lock
mdw_log_*.txt

# Local test workspaces (real user data, not part of the toolkit)
/covid-education-immigrants-test/

# Personal exploration scripts (not part of the toolkit's curated scripts/)
scripts/sample_*.py

# MONA probe artefacts -- can contain workspace metadata (paths,
# hostnames, DSNs); inspect before sharing. The findings that matter
# live in mock_data_wizard/DESIGN.md.
mdw_probe_*.log
mdw_python_probe_*.log
mdw_py_probe_*.csv
mdw_upload_probe_*.txt

# reg_meta database (built from SCB exports, not committed)
*.db

# Generated variable pins. Committed pins for curating/frozen zones are
# force-added; new generated files stay ignored until reviewed.
reg_meta_build/fqid_slugs/**/*.auto.toml
reg_meta_build/curation/registers/**/*.auto.toml

# SCB source PDFs (binary, copyrighted, not committed)
*.pdf

# Marker raw output (regenerable from PDFs + parser)
reg_meta_build/docs/_raw/

# Archive (concluded investigations, ad-hoc scripts, internal notes)
archive/
*.har

# Claude Code harness state (transient locks, per-user settings, worktree shims).
# `.claude/skills/` is intentionally tracked for shared skills, so ignore the
# transient pieces individually rather than blanket-ignoring `.claude/`.
.claude/scheduled_tasks.lock
.claude/worktrees/
.claude/settings.local.json

# Local scratch: per-task probes, benchmarks and verification receipts.
.local/
