__pycache__/
*.py[cod]
.venv/
.env
.env.docker
.uvcache/
dist/
build/
*.egg-info/
node_modules/
.next/
# TypeScript incremental build cache: rewritten by every portal build, so
# tracking it dirties the tree on each one and now on every CI run.
*.tsbuildinfo
.terraform/
.terraform.lock.hcl
tfplan
*.tfstate*
.pytest_cache/
.ruff_cache/
catalog.json
.ref/

.local/
# Per environment (ADR-0179): one shared file meant building for a second
# environment overwrote the first's recorded digests.
.platform-digests.*

# Terraform plan files. Build artefacts, and a plan can carry values read
# from state — including ones marked sensitive. `tfplan` alone did not match
# `np.tfplan`, which is how one came to be committed.
*.tfplan

# Per-developer Claude Code settings. `.claude/settings.json` is the shared,
# checked-in one; this is the personal override beside it, and it routinely
# holds machine-specific permission grants — a `kubectl exec` allowance for
# somebody's own cluster has no business in a repo that is also the starter
# template for new projects.
.claude/settings.local.json

# GENERATED AT BUILD from the prerendered documentation, by
# ui/console/scripts/gen-llms.mjs. A build artifact like `.next` and the SDK's
# `dist`: committing it would mean a second copy of every documentation page
# in the history, going stale between builds.
ui/console/public/llms-full.txt
