# Ambiente virtual
.venv/
venv/
env/

# Credenciais — NUNCA commitar
.env
*.env
.env.local
.env.*.local

# Base de dados (gerada em runtime)
*.db
*.db-shm
*.db-wal

# Cache de exploitabilidade por versão (F1, online-first)
.ccss_cache/
# config de trabalho do scripts/watch_demo.py
.watch_demo/

# Relatórios gerados pelo scan (output, não versionar)
reports/*
!reports/.gitkeep

# Python
__pycache__/
*.pyc
*.pyo
*.pyd
.Python

# Build (Python packaging artifacts — anchored to repo root so they do NOT
# match the config_assessment/build/ source package).
/dist/
/build/
*.egg-info/
*.egg

# Pytest
.pytest_cache/
.coverage
htmlcov/

# IDEs
.vscode/
.idea/
*.swp
*.swo

# Relatórios gerados
ccss-report-*.json
ccss-report-*.sarif
ccss_*.json
ccss_*.sarif

# Logs
*.log
narratives_reference.txt
# PDFs ficam fora do repo (benchmarks CIS chegam aos 78MB)…
*.pdf
# …excepto a especificação CCSS: é a base de conhecimento partilhada de TODOS
# os targets (Camada 3/RAG) e tem de viajar com o clone e com a imagem Docker.
!nistir7502.pdf

# Generated documents
*.docx

# CASPAR user state
.caspar-suppress.json

# Material da dissertação (não pertence ao repo do código)
*.zip
FCUP_thesis_layout/
caspar_inforum2026/
documentosccss/
dissertacao/
tese/
tese-pt/

# WSL: Windows "downloaded from the internet" metadata streams
*:Zone.Identifier

# Cache do Vite se algum comando npm/npx correr fora de frontend/
node_modules/

# Imagens e estado da VM de validação. Os scripts de vm/ são versionados;
# tudo o que eles geram não é — a imagem tem GB e reconstrói-se do zero
# com vm/provision.sh (ver vm/README.md).
vm/images/
vm/run/
*.qcow2
*.img
*.iso
