.venv/
__pycache__/
*.pyc
recordings/
profiles/
dist/
*.egg-info/
.ruff_cache/
.mypy_cache/
.pytest_cache/
.coverage
.coverage.*
.hypothesis/
.ci/
# Keep tracked baseline ratchets — CI + contributors share these.
!.ci/
!.ci/*-baseline.json
!.ci/pip-audit-allow.txt
# Junit test outputs from local act / CI runs — not for tracking.
.ci/*.xml
node_modules/

# .claude-plugin/ + .codex-plugin/ + .antigravity-plugin/ are intentionally
# tracked so that "claude marketplace add . / agy plugin install . / etc"
# work directly from a checkout. The check_plugin_versions.py pre-commit
# hook keeps every tracked plugin.json's "version" field in sync with the
# repo-level VERSION file.
*.actcache

# Compiled debugger frontend (built by packages/octowright-frontend)
src/octowright/server/frontend/
packages/octowright-frontend/coverage/
# package-lock.json is committed for reproducible npm installs
.worktrees/

# Local agent/tooling artifacts
.claude/
.gemini/
memray.bin

.DS_Store
.superpowers/
mutants/

# Scratch test output and external tool artifacts (never commit these).
test_output*.txt
.antigravitycli/

# Derived: regenerated by `make export-demos` from demo/bundles/ via
# scripts/demos/sync_exports.py. Bundles are the source of truth; this tree
# is a verbatim mirror plus generated JSON manifests. Excluded so the duplicate
# binaries don't bloat the repo. Run `make export-demos` before invoking
# site-octowright-com's sync workflow, or any other consumer that reads from
# demo/tutorial-export/.
demo/tutorial-export/
