*
!tests/
!tests/**
!README.md
!AGENTS.md
!DEVELOPMENT.md
!QUICKGUIDE.md
!MILESTONE*.md
!TESTS*.md
!CHANGELOG.md
!AUDIT*.md
!REF*.md
!AUDIT*.json
!LICENSE
!LICENSE-MIT.txt
!NOTICE
!TRADEMARK.md
!conftest.py
!CONTRIBUTING.md
!CODE_OF_CONDUCT.md
!SECURITY.md
!GOVERNANCE.md
!pyproject.toml
!uv.lock
!docker-compose.yml
!.env.example
!.env.full.example
!.importlinter
!.superpowers/
!.superpowers/**
!Makefile
!docker-compose.test.yml
!quadkit.yaml.example
!.github/
!.github/workflows/
!.github/workflows/**
!.github/dependabot.yml
!.devcontainer/
!.devcontainer/**
!tools/
!tools/**
!*example.yaml

# Quadkit Packages
!quadkit*/
!quadkit*/pyproject.toml
!quadkit*/CHANGELOG.md
!quadkit*/README.md
!quadkit*/alembic.ini
!quadkit*/mypy.ini
!quadkit*/*.yaml.example
!quadkit*/src/
!quadkit*/src/**
!quadkit*/docs/
!quadkit*/docs/**
!quadkit*/tests/
!quadkit*/tests/**

# Keep quadkit docs
!/docs/
!docs/**

# Session / cutover plans at the repo root
!plans/
!plans/**

# Keep example files for README examples
!/examples/
!/examples/**

# Re-ignore these AFTER negations (last match wins)
*.tape
examples/*/runs/
__pycache__/
*.pyc
*.pyo
*.egg-info/
dist/
build/
.eggs/
*.egg
.pytest_cache/
.mypy_cache/
.ruff_cache/
htmlcov/
.coverage
coverage.xml
test.db
!quadkit*/tests/fixtures/test.db
*.log
*.tmp

# Company-specific files (keep private, do not commit)
.company/
COMPANY_*.md
company-config/
internal-docs/
# Editor swap files
*.swp

# Tiered package layout (core/, packages/, experimental/<family>/)
!core/
!packages/
!experimental/
!experimental/*/
!core/quadkit*/
!packages/quadkit*/
!experimental/*/quadkit*/
!core/quadkit*/pyproject.toml
!packages/quadkit*/pyproject.toml
!experimental/*/quadkit*/pyproject.toml
!core/quadkit*/CHANGELOG.md
!packages/quadkit*/CHANGELOG.md
!experimental/*/quadkit*/CHANGELOG.md
!core/quadkit*/README.md
!packages/quadkit*/README.md
!experimental/*/quadkit*/README.md
!core/quadkit*/alembic.ini
!packages/quadkit*/alembic.ini
!experimental/*/quadkit*/alembic.ini
!core/quadkit*/mypy.ini
!packages/quadkit*/mypy.ini
!experimental/*/quadkit*/mypy.ini
!core/quadkit*/*.yaml.example
!packages/quadkit*/*.yaml.example
!experimental/*/quadkit*/*.yaml.example
!core/quadkit*/src/
!core/quadkit*/src/**
!packages/quadkit*/src/
!packages/quadkit*/src/**
!experimental/*/quadkit*/src/
!experimental/*/quadkit*/src/**
!core/quadkit*/tests/
!core/quadkit*/tests/**
!packages/quadkit*/tests/
!packages/quadkit*/tests/**
!experimental/*/quadkit*/tests/
!experimental/*/quadkit*/tests/**
!core/quadkit*/docs/
!core/quadkit*/docs/**
!packages/quadkit*/docs/
!packages/quadkit*/docs/**
!experimental/*/quadkit*/docs/
!experimental/*/quadkit*/docs/**

# dev/
!dev/
!dev/**

# Admin dev playground (committed dev asset; local SQLite files stay ignored)
!experimental/*/quadkit*/playground/
!experimental/*/quadkit*/playground/**
experimental/*/quadkit*/playground/*.db
experimental/*/quadkit*/playground/*.db-*

# Re-exclude private content under the tiered paths.
# MUST come after the !...docs/** negations above — last match wins.
core/quadkit*/docs/plans/
packages/quadkit*/docs/plans/
experimental/*/quadkit*/docs/plans/
core/quadkit*/docs/**/
packages/quadkit*/docs/**/
experimental/*/quadkit*/docs/**/

# Re-exclude tooling artifacts under the tiered paths
__pycache__/
*.pyc
*.pyo
*.egg-info/
.pytest_cache/
.mypy_cache/
.ruff_cache/
htmlcov/
.coverage
coverage.xml
test.db
*.tmp
*.log
!core/quadkit*/tests/fixtures/test.db
!packages/quadkit*/tests/fixtures/test.db
!experimental/*/quadkit*/tests/fixtures/test.db

# Allow the generated example gifs to be tracked (README hero images).
!core/quadkit*/docs/gifs/
!core/quadkit*/docs/gifs/**
!packages/*/quadkit*/docs/gifs/
!packages/*/quadkit*/docs/gifs/**
!experimental/*/quadkit*/docs/gifs/
!experimental/*/quadkit*/docs/gifs/**
examples/*/screenshot.png
