# Build outputs
extension/dist/
dist/

# Coverage reports
coverage/

# Minified vendor files
*.min.js

# Package manager files
node_modules/
pnpm-lock.yaml
package-lock.json

# Local tooling caches — auto-created in whichever CWD the tool runs from.
# Gitignored but prettier reads .prettierignore, not .gitignore, so these
# entries prevent a local-only format-check failure on mypy/pytest/ruff
# cache JSON when prettier scans a subtree that happens to contain one.
.mypy_cache/
**/.mypy_cache/
.pytest_cache/
**/.pytest_cache/
.ruff_cache/
**/.ruff_cache/

# Generated files
*.vsix
extension/test-artifacts/

# Intentionally malformed fixture for negative tests
extension/tests/fixtures/broken-docs/data/dataset-manifest.json

# Generated broken-docs fixture outputs
extension/tests/fixtures/broken-docs/artifact-client.js
extension/tests/fixtures/broken-docs/dashboard.js
extension/tests/fixtures/broken-docs/dataset-loader.js
extension/tests/fixtures/broken-docs/error-codes.js
extension/tests/fixtures/broken-docs/error-types.js

# Owned by scripts/stamp-extension-version.cjs (JSON.stringify(data, null, 4)).
# Prettier would rewrite to 2-space; the next semantic-release run would stamp
# back to 4-space — infinite loop. See LOCAL_CI_PARITY_INVARIANTS.md row 17a.
extension/vss-extension.json
extension/tasks/extract-prs/task.json

# Untracked aggregate outputs regenerated by the local pipeline.
# Prettier check passes in CI (clean checkout) but fails locally after a demo
# regeneration — local/CI parity break. Never format these files.
extension/run_artifacts/
