# Operator config — holds real DSN hosts, project slugs, secret-backend refs.
# Never committed; a placeholder-only suite.env.example is committed instead.
suite.env
*.env
.env
secrets/

# Real deployment captures / component data — never committed
samples/
*.db
*.sqlite3
*.sqlite3-wal
*.sqlite3-shm

# Operator-specific convergence/proof evidence — never committed. The
# canonical release-evidence artifacts live under golden/ at the root
# (scrubbed, publication-clean). golden/local/ holds operator-specific
# proof logs that name real hostnames, user accounts, and infrastructure
# endpoints; per docs/publication-review.md these are publication-sensitive
# even when the canonical identifier denylist does not forbid them.
golden/local/

# Production operating-history exports — never committed. These contain real
# operational events and identifiers from the production store. A metadata
# manifest (README.md) records the bundle hash, counts, and verifier result;
# the full export belongs in access-controlled release evidence, not the public
# tree (Sol round-3 finding #3).
golden/operating-history/*.json

# Generated inventory snapshot — never committed. The inventory is a
# current-state read of the operator's checkouts + suite.env, so any
# committed snapshot is immediately self-stale (committing it changes the
# umbrella HEAD it just snapshotted). The canonical release-time artifact
# is generated by CI on tag push (see .github/workflows/release.yml when
# present) and attached to the release; local operators run
# `agent-suite inventory --json` for live inspection. See Sol round-2/3
# finding #2 and data/release-board.json WI-0.2 status_note.
data/candidate-inventory.json

# The generated lock is committed (it IS the release artifact); a local scratch is not
SUITE.local.lock

# Python
__pycache__/
*.py[cod]
.venv/
venv/
*.egg-info/
dist/
build/
.mypy_cache/
.ruff_cache/
.pytest_cache/
uv.lock

# Editors / OS
.DS_Store
*.swp
.venv/

# never commit the local denylist (identifier gate)
.identifiers-denylist.local
