#===============Mac OS=======================
.DS_Store
**/.DS_Store

#===============ROOT-LEVEL CLUTTER PREVENTION==============
# Generated output that should never be in root directory
/*.png
/*.jpg
/*.jpeg
/*.pdf
/*.vtk
/*_analysis.py
/*_demo.py
/*_test.py
/temp_*.py
/mesh_output/
/benchmark_results/
/demo_benchmark_results/

# Workflow runtime data and workspace
/.mfg_workflows/
/.mfg_sweeps/
/.mfg_cache/

#===============CONTRIBUTOR WORKFLOW ISOLATION============
# IDE-specific configuration (avoid forcing contributor preferences)
.vscode/settings.json.local
.vscode/launch.json.local
.idea/workspace.xml
.idea/personal/
*.code-workspace.local
.dev-settings/

# AI interaction guidelines (highly personal to each contributor)
CLAUDE.md.personal
CLAUDE-*.md
AI-GUIDELINES-*.md
*-ai-config.md
.ai-settings/
.claude-personal/

# Strategic typing excellence tracking (temporary analysis)
/strategic_typing_progress.md
/type_error_tracking.md
/mypy_error_analysis.md
/ci_cd_strategic_analysis.md

# Individual developer configurations
.pre-commit-config-personal.yaml
.pre-commit-config-local.yaml
.dev-environment/
.personal-setup/

# Temporary analysis files and development scripts
*_analysis_temp.py
*_temp_analysis.md
*_personal_notes.md
progressive_api_design_temp.py
smart_defaults_temp.py
type_system_temp.py

# Personal development artifacts
/demo_temp_*.py
/temp_demo_*.py
/personal_*.py
.dev-notes/
.contributor-workspace/

# Claude and AI-specific temporary/personal files
.claude/temp/
.claude/cache/
.claude/personal/
.ai-cache/

# Note: This allows contributors to maintain personal AI guidelines,
# IDE settings, and development preferences without forcing them on others.
# The original CLAUDE.md remains tracked as a reference/starting point.

#===============UV PACKAGE MANAGER (OPTIONAL)==============
# UV files are optional - repository supports both pip and UV
# Keep uv.lock tracked for reproducible research environments
# but ignore UV cache and temporary files
.uv_cache/
uv_cache/
.uvx/

#===============================================
# C
#===============================================
# Prerequisites
*.d

# Object files
*.o
*.ko
*.obj
*.elf

# Linker output
*.ilk
*.map
*.exp

# Precompiled Headers
*.gch
*.pch

# Libraries
*.lib
*.a
*.la
*.lo

# Shared objects (inc. Windows DLLs)
*.dll
*.so
*.so.*
*.dylib

# Executables
*.exe
*.out
*.app
*.i*86
*.x86_64
*.hex

# Debug files
*.dSYM/
*.su
*.idb
*.pdb

# Kernel Module Compile Results
*.mod*
*.cmd
.tmp_versions/
modules.order
Module.symvers
Mkfile.old
dkms.conf

#===============================================
# C++
#===============================================
# Prerequisites
*.d

# Compiled Object files
*.slo
*.lo
*.o
*.obj

# Precompiled Headers
*.gch
*.pch

# Compiled Dynamic libraries
*.so
*.dylib
*.dll

# Fortran module files
*.mod
*.smod

# Compiled Static libraries
*.lai
*.la
*.a
*.lib

# Executables
*.exe
*.out
*.app

#===============================================
# CMake
#===============================================
CMakeLists.txt.user
CMakeCache.txt
CMakeFiles
CMakeScripts
Testing
Makefile
cmake_install.cmake
install_manifest.txt
compile_commands.json
CTestTestfile.cmake
_deps
#===============================================
# Haskell
#===============================================
dist
dist-*
cabal-dev
*.o
*.hi
*.hie
*.chi
*.chs.h
*.dyn_o
*.dyn_hi
.hpc
.hsenv
.cabal-sandbox/
cabal.sandbox.config
*.prof
*.aux
*.hp
*.eventlog
.stack-work/
cabal.project.local
cabal.project.local~
.HTF/
.ghc.environment.*
#===============================================
# Python
#===============================================

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
#  Usually these files are written by a python script from a template
#  before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
.pybuilder/
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
#   For a library or package, you might want to ignore these files since the code is
#   intended to run in multiple environments; otherwise, check them in:
# .python-version

# pipenv
#   According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
#   However, in case of collaboration, if having platform-specific dependencies or dependencies
#   having no cross-platform support, pipenv may install dependencies that don't work, or not
#   install all needed dependencies.
#Pipfile.lock

# poetry
#   Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
#   This is especially recommended for binary packages to ensure reproducibility, and is more
#   commonly ignored for libraries.
#   https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
#poetry.lock

# PEP 582; used by e.g. github.com/David-OConnor/pyflow
__pypackages__/

# Celery stuff
celerybeat-schedule
celerybeat.pid

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/

# pytype static type analyzer
.pytype/

# Ruff cache
.ruff_cache/

# Strategic typing development artifacts
type_analysis_temp/
strategic_typing_temp/
mypy_reports/
ruff_reports/

# Cython debug symbols
cython_debug/

# PyCharm
#  JetBrains specific template is maintained in a separate JetBrains.gitignore that can
#  be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
#  and can be added to the global gitignore or merged into this file.  For a more nuclear
#  option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/

#===============================================
# Rust
#===============================================

# Generated by Cargo
# will have compiled files and executables
debug/
target/

# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries
# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
Cargo.lock

# These are backup files generated by rustfmt
**/*.rs.bk

# MSVC Windows builds of rustc generate these, which store debugging information
*.pdb



#===============================================
# TeX
#===============================================
## Core latex/pdflatex auxiliary files:
*.aux
*.lof
*.log
*.lot
*.fls
*.out
*.toc
*.fmt
*.fot
*.cb
*.cb2
.*.lb

## Intermediate documents:
*.dvi
*.xdv
*-converted-to.*
# these rules might exclude image files for figures etc.
# *.ps
# *.eps
# *.pdf

## Generated if empty string is given at "Please type another file name for output:"
.pdf

## Bibliography auxiliary files (bibtex/biblatex/biber):
*.bbl
*.bcf
*.blg
*-blx.aux
*-blx.bib
*.run.xml

## Build tool auxiliary files:
*.fdb_latexmk
*.synctex
*.synctex(busy)
*.synctex.gz
*.synctex.gz(busy)
*.pdfsync

## Build tool directories for auxiliary files
# latexrun
latex.out/

## Auxiliary and intermediate files from other packages:
# algorithms
*.alg
*.loa

# achemso
acs-*.bib

# amsthm
*.thm

# beamer
*.nav
*.pre
*.snm
*.vrb

# changes
*.soc

# comment
*.cut

# cprotect
*.cpt

# elsarticle (documentclass of Elsevier journals)
*.spl

# endnotes
*.ent

# fixme
*.lox

# feynmf/feynmp
*.mf
*.mp
*.t[1-9]
*.t[1-9][0-9]
*.tfm

#(r)(e)ledmac/(r)(e)ledpar
*.end
*.?end
*.[1-9]
*.[1-9][0-9]
*.[1-9][0-9][0-9]
*.[1-9]R
*.[1-9][0-9]R
*.[1-9][0-9][0-9]R
*.eledsec[1-9]
*.eledsec[1-9]R
*.eledsec[1-9][0-9]
*.eledsec[1-9][0-9]R
*.eledsec[1-9][0-9][0-9]
*.eledsec[1-9][0-9][0-9]R

# glossaries
*.acn
*.acr
*.glg
*.glo
*.gls
*.glsdefs
*.lzo
*.lzs
*.slg
*.slo
*.sls

# uncomment this for glossaries-extra (will ignore makeindex's style files!)
# *.ist

# gnuplot
*.gnuplot
*.table

# gnuplottex
*-gnuplottex-*

# gregoriotex
*.gaux
*.glog
*.gtex

# htlatex
*.4ct
*.4tc
*.idv
*.lg
*.trc
*.xref

# hyperref
*.brf

# knitr
*-concordance.tex
# TODO Uncomment the next line if you use knitr and want to ignore its generated tikz files
# *.tikz
*-tikzDictionary

# listings
*.lol

# luatexja-ruby
*.ltjruby

# makeidx
*.idx
*.ilg
*.ind

# minitoc
*.maf
*.mlf
*.mlt
*.mtc[0-9]*
*.slf[0-9]*
*.slt[0-9]*
*.stc[0-9]*

# minted
_minted*
*.pyg

# morewrites
*.mw

# newpax
*.newpax

# nomencl
*.nlg
*.nlo
*.nls

# pax
*.pax

# pdfpcnotes
*.pdfpc

# sagetex
*.sagetex.sage
*.sagetex.py
*.sagetex.scmd

# scrwfile
*.wrt

# svg
svg-inkscape/

# sympy
*.sout
*.sympy
sympy-plots-for-*.tex/

# pdfcomment
*.upa
*.upb

# pythontex
*.pytxcode
pythontex-files-*/

# tcolorbox
*.listing

# thmtools
*.loe

# TikZ & PGF
*.dpth
*.md5
*.auxlock

# titletoc
*.ptc

# todonotes
*.tdo

# vhistory
*.hst
*.ver

# easy-todo
*.lod

# xcolor
*.xcp

# xmpincl
*.xmpi

# xindy
*.xdy

# xypic precompiled matrices and outlines
*.xyc
*.xyd

# endfloat
*.ttt
*.fff

# Latexian
TSWLatexianTemp*

## Editors:
# WinEdt
*.bak
*.sav

# Texpad
.texpadtmp

# LyX
*.lyx~

# Kile
*.backup

# gummi
.*.swp

# KBibTeX
*~[0-9]*

# TeXnicCenter
*.tps

# auto folder when using emacs and auctex
./auto/*
*.el

# expex forward references with \gathertags
*-tags.tex

# standalone packages
*.sta

# Makeindex log files
*.lpz

# xwatermark package
*.xwm

# REVTeX puts footnotes in the bibliography by default, unless the nofootinbib
# option is specified. Footnotes are the stored in a file with suffix Notes.bib.
# Uncomment the next line to have this generated file ignored.
#*Notes.bib

#===============================================
# MFGarchon Project Specific
#===============================================

# Test and demo output directories
*_output/
*_test_output/
demo_output/
notebook_demos/
visualization_output/
mathematical_visualization_output/
balanced_test_output/
lowercase_test_output/
math_test_output/
spacing_test_output/
test_output/

# Benchmark results and outputs
benchmarks/results/
benchmarks/*_output/
benchmark_results/

# Runtime log directories
logs/
research_logs/
performance_logs/

# Scientific computing files
*.png
*.pdf
*.npy
*.npz
*.pkl
*.h5
*.hdf5
figures/
plots/

# Jupyter notebook outputs and checkpoints
*.ipynb_checkpoints/
.ipynb_checkpoints/
**/ipynb_checkpoints/

# Matplotlib cache and temp files
.matplotlib/
mpl_temp/

# IDE and editor files
.vscode/
.idea/
*.code-workspace

# Temporary and backup files
*.tmp
*.temp
*.bak
*.backup
*.orig
*~
.#*

# Analysis and report files (generated)
*.analysis.json
*_analysis.html
*_report.html

# Package build artifacts
build/
dist/
*.egg-info/

# MFGarchon specific - prevent accumulation of analysis outputs
# Only ignore output directories, not source code
*_results/
*_demo_data/
*_analytics_results/
polars_demo_data/
/research_logs/
/performance_data/
/output/
/results/

# Prevent clutter in examples and temporary files
no_barrier_results/
performance_data/
test_output/
demo_benchmark_results/

# Only ignore root-level analysis outputs (not examples/ or tests/)
/*.png
/*.html
/*.json
/*_analysis.py
/*_demo.py
/*_comparison.py
/*_figure*.py
/*_comprehensive_summary.md
/quick_*.py
/efficient_*.py
/beach_*.py
/create_*.py
/extract_*.py
/generate_*.py
/convergence_analysis.png
/equilibrium_*.png
/lambda_*.png
/parameter_*.png
/fig*.png
/font_*.png

# Only temporary files in root
/temp_*.py
/test_*.py

# But always track important examples and tests (override above rules)
!examples/**/*.py
!tests/**/*.py
!docs/**/*.md
!benchmarks/**/*.py

# Exception: Never track private files (re-ignore after negation above)
# Note: Using backslash to escape brackets in gitignore pattern
**/*\[PRIVATE\]*.md
**/*\[PRIVATE\]*.py
**/*\[PRIVATE\]*.txt
**/*\[PRIVATE\]*.pdf

#===============================================
# Notebook-Based Reporting and Output Organization
#===============================================

# Examples outputs (regenerable from scripts)
examples/outputs/tutorials/
examples/outputs/basic/
examples/outputs/advanced/

# Track reference outputs and documentation
!examples/outputs/reference/
!examples/outputs/README.md

# Track notebooks with cleared outputs
!examples/**/*.ipynb

# Track exported HTML reports from notebooks
!examples/notebooks/**/*.html
!benchmarks/notebooks/**/*.html
!benchmarks/reports/**/*.html

# Benchmark raw results (gitignored, use notebooks for reports)
benchmarks/results/

# Test outputs (gitignored, regenerated by CI)
tests/outputs/
# Demo output directories (Phase 2.1 examples)
/traffic_flow_2d/
/portfolio_optimization_2d/
/epidemic_modeling_2d/
# Benchmark performance history (gitignored - regenerable)
benchmarks/history/

#===============================================
# Unpublished Research and Private Documents
#===============================================

# Private document pattern: Files with [PRIVATE] in the name are never committed
# Usage: Name any private file as [PRIVATE]_descriptive_name.ext
# Note: Brackets are escaped with backslash for gitignore pattern matching
**/*\[PRIVATE\]*.md
**/*\[PRIVATE\]*.py
**/*\[PRIVATE\]*.txt
**/*\[PRIVATE\]*.pdf

# Private directories (simpler: exclude everything)
docs/user/private/

# Generated outputs (regenerable)
outputs/
research_outputs/
