cd "$(git rev-parse --show-toplevel)"

cat > .gitignore <<'EOF'
# MCGT - .gitignore
# Règles focalisées sur les artefacts générés / locaux (éviter d’attraper du contenu versionné).

# -------------------------------------------------------------------
# Python / environnements / caches
# -------------------------------------------------------------------
.venv/
.venv*/
venv/
venv*/
__pycache__/
*.py[cod]
.pytest_cache/
.mypy_cache/
.ruff_cache/
.ipynb_checkpoints/

# -------------------------------------------------------------------
# Build / packaging (générés)
# -------------------------------------------------------------------
build/
dist/
*.egg-info/
*.dist-info/

# -------------------------------------------------------------------
# Artefacts générés par le projet (locaux)
# -------------------------------------------------------------------
_tmp/
_tmp-figs/
_logs/
_snapshots/
_archives_preclean/
_attic_untracked/
_autofix_sandbox/

# Sorties CI / diag
.ci-out/
.ci-logs/
.ci-archive/

# Sorties de runs (gros artefacts)
zz-out/
zz-logs/

# Backups locaux
backups/

# -------------------------------------------------------------------
# Fichiers temporaires / éditeurs / OS
# -------------------------------------------------------------------
*.log
*.stderr
*.stdout
*.err
*.out
*.tmp
*.old
*.orig
*.rej
*.bak
*.bak_*
*.bak.*
*.save
*.swp
*.swo
*~
.DS_Store

# -------------------------------------------------------------------
# GitHub workflows: fichiers temporaires / backups seulement
# -------------------------------------------------------------------
.github/workflows/*.tmp
.github/workflows/*.bak*
.github/workflows/*.before_*
.github/workflows/*.disabled

# -------------------------------------------------------------------
# Sidecars / verrous générés (non versionnés)
# -------------------------------------------------------------------
*.sha256sum
*.lock.json

# Exceptions: on versionne ces sha256 malgré "*.sha256sum"
!zz-manifests/manifest_publication.sha256sum
!zz-manifests/manifest_data.sha256sum
!zz-manifests/manifest_figures.sha256sum
!zz-manifests/manifest_master.json.sha256sum

# -------------------------------------------------------------------
# Legacy / archives locales (si gardées localement)
# -------------------------------------------------------------------
legacy-tex/
release_zenodo_codeonly*/
release_zenodo_codeonly_v*/
release_*.tar.gz

# -------------------------------------------------------------------
# Housekeeping / manifest refresh (locaux)
# -------------------------------------------------------------------
attic/
zz-manifests/_backups/

# -------------------------------------------------------------------
# Leaks locaux (ne pas versionner)
# -------------------------------------------------------------------
zz-figures/**/_attic_root_leaks/

# -------------------------------------------------------------------
# Trackés volontairement (ne doivent pas être "ignorés")
# -------------------------------------------------------------------
!zz-manifests/figures_index.csv
!zz-manifests/figures_per_chapter.md
EOF
