node_modules
dist
dist-ssr
*.local
.DS_Store

# Claude Code per-user settings — user-specific allow-list, not for git.
.claude/settings.local.json
.claude/settings.json
# Dev secrets. Deny-by-default rather than a list of known filenames: this
# directory holds throwaway CONFIG that is safe to commit (dev-users.json,
# dev-ldap.json) alongside real CREDENTIALS that never are, and an
# extension-based rule silently fails to cover the next secret someone drops
# here — which already happened once with a Google client secret in a .json.
.claude/skills/local-boot/*
!.claude/skills/local-boot/SKILL.md
!.claude/skills/local-boot/dev-users.json
!.claude/skills/local-boot/dev-ldap.json
!.claude/skills/local-boot/ldap-seed.ldif

# Editor
.idea
.vscode/*
!.vscode/extensions.json
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

# Logs
logs
# …but `apps/ui/src/layer/logs/` is the Logs *feature* source, not log
# output — re-include it so new components there aren't silently dropped.
!apps/ui/src/layer/logs/
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*

# Test/coverage
coverage
*.lcov
.nyc_output

# E2E run output: the Playwright report, traces/screenshots, and the session
# state auth.setup.ts writes for the other projects.
# Anywhere under test/e2e: Playwright resolves these against its cwd, which
# differs between a case run and a direct invocation.
test/e2e/**/playwright-report
test/e2e/**/test-results
test/e2e/**/.auth

# Build artifacts
*.tsbuildinfo

# OS
Thumbs.db

# BFF runtime files (horizon.yaml itself is committed — the env-driven config)
horizon-wire.jsonl

# Release
scripts/.release-work
# Pinned license-eye installed by release.sh (see .license-eye-version).
scripts/.release-tools
scripts/.finalize-work
# e2e failure diagnostics — collected on a red run, never committed.
e2e-logs/

# The ui:// MCP card bundle — a build artifact (`pnpm build:mcp-app`), not source.
apps/ui/dist-mcp-app/
apps/bff/src/ai/mcp/app/

# The terminal renderer a client downloads and runs — a build artifact
# (`pnpm build:terminal-render`), not source.
apps/bff/src/ai/terminal/bundle/
