# 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/

# IDE
.idea/
.vscode/
*.swp

# OS
.DS_Store
Thumbs.db

# Project
.tmp/

# 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/
# 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

# Build-generated auto-slug TOMLs (variable slugs). A `churning` provider (the
# #470 default) regenerates these from scratch each build — only the curated
# <provider>.toml, the freeze.toml state map, and .snapshot.json are committed.
# Covers the global dir and per-steward subdirs (fqid_slugs/swecov/).
# See reg_meta_build/DESIGN.md → Slug immutability.
reg_meta_build/fqid_slugs/**/*.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
