__pycache__/
*.py[cod]
*$py.class
*.so
*.egg-info/
*.egg
dist/
build/
.eggs/
*.whl

# Vendored OS packages — e.g. the Chromium/Playwright browser system
# libraries pulled in by `playwright install-deps` (libgtk, libnss,
# libcairo, …). Runtime artifacts re-fetched via apt; never source.
*.deb

# `.venv*/`, not `.venv/`. The release workflow creates `.venv-docs/` to build
# the in-wheel Sphinx HTML (#876), and `.venv/` matches ONLY the directory named
# exactly `.venv` — so `.venv-docs/` was untracked-but-not-ignored, hatchling
# swept it into the sdist, and `uv build` refused the tarball because a venv's
# `bin/python` is an absolute symlink to the interpreter. Measured 2026-08-17 on
# the v0.43.0 release build:
#     Caused by: failed to unpack .../scitex_cards-0.43.0/.venv-docs/bin/python
#     Caused by: symlink path `/usr/bin/python3.12` is absolute, but external
#                symlinks are not allowed
# A glob rather than a second literal line, so the next differently-suffixed
# venv is covered without anyone remembering to add it.
.venv*/
venv/
env/
.env
.tox/
.pytest_cache/
.mypy_cache/
.ruff_cache/
.coverage
.coverage.*
htmlcov/
*.swp
*.swo
*~
.DS_Store
.idea/
.vscode/

# Agent scratch + local git worktrees — never committed.
GITIGNORED/
.worktrees/

# Per-machine Claude Code agent context (settings.local.json, the scheduled
# task lock). Synced from dotfiles per machine; not project source.
.claude/

# Playwright MCP snapshots — throwaway browser-automation output (console
# logs, page .yml dumps, .png screenshots) from driving the board's UI.
.playwright-mcp/

# A directory literally named `postgresql:` — created when a connection DSN
# was passed somewhere a filesystem path was expected, so the driver made
# `postgresql:/scitex_cards@127.0.0.1:5432/` on disk and wrote a lock and a
# store DB into it. It is the artifact of a bug, never source. Root-anchored
# so the odd name cannot match anything nested.
/postgresql:/

# The displaced-files trash bin. House rule is that nothing is ever deleted —
# it is moved to .old/<timestamp>/ instead — so this accumulates superseded
# files by design.
.old/

# Rendered task graphs — generated artifacts, never committed.
tasks.png
*.tasks.png

# Sphinx build output (RTD builds from source; local HTML is throwaway).
docs/sphinx/_build/

# In-wheel docs, GENERATED at release time — never committed.
#
# scitex-cloud serves package docs from this directory inside the wheel
# (PS-121). It used to be committed to develop by the `docs` workflow, which
# could not work: develop is protected, so the push was rejected on every
# merge, swallowed by `git push || echo` under `continue-on-error: true`, and
# the directory sat empty from 2026-06-17 while the step reported success.
#
# It is now built in the release workflow and carried into the wheel by
# `artifacts` in pyproject.toml — which is hatchling's mechanism for shipping
# exactly this, a VCS-ignored generated tree. Ignoring it here is therefore
# load-bearing, not hygiene: if it becomes tracked again, the old
# push-to-protected-branch failure returns.
src/scitex_cards/_sphinx_html/

# scitex-cards local state: ignore everything under .scitex/ except the
# tracked dev/config.yaml (audit whitelist) and the runtime seed files.
.scitex/*
!.scitex/dev/
.scitex/dev/*
!.scitex/dev/config.yaml
# PR #110 fix-forward (lead a2a `bbca090684ab4cb1a0fdc26008dec066`,
# 2026-06-12): scitex-dev audit-cli reads per-package vocab additions
# from `.scitex/dev/cli-audit-dict.yaml`. The file must be tracked so
# CI sees the same whitelist as local — gitignore exception added.
!.scitex/dev/cli-audit-dict.yaml
# Track the cards runtime dir's seed files; ignore its actual contents.
# These paths named the PRE-RENAME directory until 2026-08-16, while the
# runtime itself moved to `.scitex/cards/` — so `.scitex/*` swallowed the
# whole live directory and the seed files below were tracked only because
# they predated the move. Anything added there since was silently ignored.
!.scitex/cards/
.scitex/cards/*
!.scitex/cards/runtime/
.scitex/cards/runtime/*
!.scitex/cards/runtime/.gitkeep
!.scitex/cards/runtime/README.md
.peer-repos/
