# Python
__pycache__/
*.py[cod]
*.egg-info/
dist/
build/
.eggs/
*.egg

# Virtual environment
venv/
.venv/
env/

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

# Data (862 MB -- regenerate with trainers/fetchers, NOT stored in git)
# Run: python overnight_trainer.py  OR  python -m data_pipeline.scheduler --once
data/*
!data/README.md
# Bundled USGS fallback snapshots (gzipped JSON, ~1.3 MB total).  These
# let safe_receiver_discovery.py work on a fresh clone or during USGS
# outages without first running scripts/refresh_usgs_caches.py.
!data/upstream_cache/
data/upstream_cache/*
!data/upstream_cache/fallback/
data/upstream_cache/fallback/*
!data/upstream_cache/fallback/*.json.gz
# Curator-maintained seed CSVs (small, hand-edited, deployed with the matcher
# code).  Not bulk data -- these are reference lookups required at runtime.
!data/yellowstone_hydrothermal_events.csv
!data/orphan_wells_reocr_targets.csv
!data/orphan_wells_reocr_targets_filtered.csv
!data/orphan_wells_by_basin.csv
!data/known_periodic_cycles.json
!data/international_basin_definitions.json
!data/tribal_water_rights_catalog.json
!data/hydrocarbon_storage_beyond_phmsa.json
!data/yellowstone_webcam_catalog.json
!data/yellowstone_youtube_watchlist.json
# Phase B.0a.5 ECM runtime quarantine -- auto-populated by
# earth_consciousness_monitor.py when builders crash; reboots remember.
# Template (empty quarantined list) shipped in the repo; production
# instances overwrite in place.  Tracked so fresh clones have the file.
!data/ecm_quarantine.json
# CI baseline: count is bumped manually after verifying that newly-
# quarantined entries are intentional.  Audit script fails if the
# runtime quarantine grew beyond this count without operator review.
!data/ecm_quarantine_baseline.json
# Per-region floor-error correction (Aug 7 2026).  TRACKED (unlike the
# server-generated match_radius_calibration.json) so the fix deploys via
# commit+pull.  Consequence: the monthly refresh
# (scripts/calibrate_floor_error.py --commit) must run in the dev clone and
# be committed+pushed -- NEVER as a prod-tree cron, which would perpetually
# dirty the checkout and freeze the */15 auto-pull (known bug class).
!data/floor_error_calibration.json
# The DECLARED magnetic-baseline threshold rule (q, population, window, min n),
# frozen 2026-08-19 before any distribution was accumulated and verified by
# canonical sha256 in scripts/magnetic_threshold_review.py.  It is a contract,
# not data: it must be byte-identical on every box, so it travels by git.
# Deliberately NOT tracked: data/magnetic_threshold_history.db (the accumulated
# store) and data/magnetic_threshold_applied_v1.json (the fired values) -- both
# are produced on CPX41, and a tracked cron-written file perpetually dirties the
# checkout and freezes the */15 auto-pull.
!data/magnetic_threshold_rule_v1.json
!data/gnss_trenchward_frozen_stations.json
!data/precursor_pinned_pairs.json
*.h5
*.hdf5
*.segy
*.sgy
*.mseed
*.nc
*.db

# Generated hash-chained insurance forecast ledger (Phase 65w).
# Already covered by data/* and *.db above; listed explicitly for clarity.
data/insurance_forecast_ledger.db

# Inventor-private cave outputs (Coyote Cave + similar undisclosed finds)
reports/artesian_cave_hydro_western_us.json
reports/artesian_cave_hydro_western_us.csv
reports/coyote_cave_*
reports/safe_receivers_ranked.json
data/private/

# Output
outputs/
output/
*.png
# Figures that ARE the document, not build output. Tracked by an explicit
# negation rather than `git add -f`: a figure that needs -f to commit is a
# figure that silently stays stale, which is how the market doc shipped a chart
# for nine days after the panel on it had been withdrawn (2026-08-12).
!strategy/figures/*.png
!strategy/figures/*.svg
# Globe textures are committed assets, not build output: they are generated
# offline by scripts/generate_igrf_globe_textures.py (validated against the
# NOAA calculator before writing) and served statically at /static/textures/.
!static/textures/*.png
*.html
!demo_landing.html
!demo_landing_es.html
!volcanosafe/landing.html
!dashboard/templates/*.html
!dashboard/templates/capstaq/*.html
!static/api_landing.html
!reports_landing.html
!nhd_landing.html
!leads_landing.html
!site_v2/templates/*.html
!underwriter_landing.html
!alertas_landing.html
!pdo_landing.html
!agents_landing.html
!health_landing.html
!sleep_landing.html
!ghost_guard_landing.html
!geohealth_landing.html
!mold_landing.html
!wildfire_landing.html
!heritage_landing.html
!construction_landing.html
!subrisk_landing.html
!forensic_landing.html
!space_weather_landing.html
!sewage_landing.html
!mycorrhizal_landing.html
!tidal_health_landing.html
!safety_landing.html
!portfolio_landing.html
!tonga_landing.html
!capstaq_landing.html
!capstaq_landing_es.html
!muon_weather_landing.html
!earth_state_dashboard.html
!skyquakes_landing.html
!causal_physics_landing.html
!privacy.html
!static/*.html
*.pdf

# Trained Models (TRADE SECRET - never commit weights)
models/
*.joblib
*.pkl
*.onnx

# Secrets
.env
*.key
*.pem
credentials/

# MCP publisher
mcp-publisher.exe
mcp-publisher

# IP-sensitive docs (keep local only)
IP_STRATEGY.md
IP_STRATEGY.docx

# Word temp files
~$*.docx

# OS
.DS_Store
Thumbs.db

# MCP build artifacts
mcp_build/

# Node.js (papers/ generators)
node_modules/
package.json
package-lock.json

# Claude
.claude/
.vercel
.venv_libs/
papers/patent_war_room/API_CREDENTIALS_SETUP.md
dashboard/templates/autonomous_station.html

# Autogenerated daily evidence snapshots + summary reports.
# These regenerate every 24h on each server and drift between AX41 and
# CPX41, polluting `git status` and blocking `git pull` on the deploy
# cron.  Regenerate locally via scripts/patent_evidence_snapshot.py.
papers/patent_war_room/p25_evidence_logs/daily_snapshots/*.json
papers/patent_war_room/p25_evidence_logs/summary_reports/*.md
papers/patent_war_room/**/monthly_digests/*.pdf

# P25 non-provisional prep (2026-07): draft claims, adversarial memos, and figures.
# Sensitive IP -- keep LOCAL, do not commit (Mike directive 2026-07-27).
papers/patent_war_room/P25_NONPROV_DRAFT_v1.md
papers/patent_war_room/GROK_P25_ADVERSARIAL_20260727.md
papers/patent_war_room/GROK_P25_FINAL_REVIEW_20260727.md
papers/patent_war_room/ATTORNEY_HANDOFF_P25.md
papers/patent_war_room/P25_HANDOFF.pdf
papers/patent_war_room/figures/

# Autogenerated backtest / replay artefacts.  Treat like build output --
# the recipe is in the script, the result is ephemeral.
reports/research_notes/*backtest*.json
reports/research_notes/magna_2020_historical_dvv.json
reports/research_notes/convergence_backtest.json

# Auto-generated scan outputs -- noisy in git status otherwise
reports/deep_water_muon_scan_*.json
reports/deep_water_muon_scan_*.txt
reports/sevier_desert_og_muon_scan_*.json
reports/sevier_desert_og_muon_scan_*.txt
reports/millard_salt_dome_scan_*.json
reports/millard_salt_dome_scan_*.txt
reports/tesla_ulf_scan_*.json
reports/tesla_ulf_scan_*.txt
reports/historical_archive_kickoff.log
reports/miss_explorer_*.json
reports/miss_explorer_*.txt

# Generated dataset exports (produced by scripts/export_prediction_features_dataset.py)
exports/

# Local-only dev artefacts that kept jamming the deploy cron
.env.bak.*
.git.broken/
*.bak.[0-9]*
/tmp_test*
data/pews_overnight_report.json

# Trained ML model artefacts (CLAUDE.md spec: models/ is gitignored).
# These are regenerated by training crons (Sunday retrain, daily staleness
# checks, demand-driven trainers).  Keeping them out of git removes the
# Apr 28 sync churn where AX41 retrained models showed as modified blocking
# pulls.  models/README.md is the only tracked file under models/.
models/*
!models/README.md

# Auto-generated cron output reports.  Updated daily by their owning scripts;
# tracking them creates merge-conflict noise on every pull.  Canonical state
# is the most recent JSON written by cron, not git history.
reports/safe_receivers_discovered.json
reports/open_faults_near_artesian.json

# AX41 reconciliation backup (Apr 28 git permissions session) -- delete in 24h.
_backups_apr28/

# O&G / satellite grid-scan outputs (regenerated artifacts; canonical state is
# the latest CSV/JSON written by the scan script, not git history).
reports/og_*_grid.csv
reports/top200_og_*_grid.*
reports/satellite_scorecards/*.json

# Local backup + log dirs (host-specific runtime, never deliverables)
_backups/
_backups_apr27/
logs/

# Replenishable Pressurized Water Program runtime outputs.  Hundreds of
# JSON/CSV files regenerated by scripts/page_az_pressure_survey.py,
# scripts/nwis_flowing_well_sweep.py, scripts/us_hot_springs_atlas.py,
# scripts/well_tidal_efficiency_screen.py, scripts/discovery_*.py, etc.
# These are intermediate working files -- the canonical state is the
# private 373-site Master Atlas at data/private/replenishable_atlas/.
reports/*classification*.json
reports/pressure_trend_*.json
reports/pinpoint_*.json
reports/pinpoint_*.csv
reports/discovery_*.json
reports/discovery_*.csv
reports/discovery_*.txt
reports/combined_v*.json
reports/combined_v*.csv
reports/combined_v*.txt
reports/combined_water_targets.json
reports/combined_water_targets.csv
reports/combined_water_targets_top20_summary.txt
reports/deep_upwelling_*.json
reports/deep_upwelling_*.csv
reports/deeper_replenishable_*.json
reports/cave_pumped_hydro.json
reports/cave_pumped_hydro.csv
reports/cave_thermal_anomaly_ranked.json
reports/co2_sequestration_inverse.json
reports/co2_sequestration_inverse.csv
reports/page_az_pressure_atlas.json
reports/page_az_pressure_atlas.csv
reports/page_az_pressure_atlas.kml
reports/millard_county_h2_targets.json
reports/millard_county_h2_targets.csv
reports/utah_targets_earth_inversion.json
reports/utah_ei_enrichment_summary.json
reports/ar_recharge_correlation.json
reports/arizona_strip_navajo_hub.json
reports/artesian_cave_hydro.csv
reports/artesian_cave_hydro.json
reports/calibration_drift_*.md
reports/decision_curve_analysis_*.json
reports/decision_curve_analysis_*.md

# Subdirs with no tracked files (verified May 4 audit) -- runtime outputs
# from various analysis pipelines.  Add files individually to git if a
# specific result deserves to be tracked.  Keeps reports/orphan_wells/,
# reports/science/, reports/phase65r/ tracked as the user is curating
# selected timestamped outputs in those directories.
reports/causal_graph/
reports/network_topology/
reports/replenishable/
reports/water_atlas/
reports/utah_geothermal/
reports/sgd_weekly/
reports/gsl_refill/
reports/pipeline_routing/
reports/perpetual_geothermal/
reports/moonshots_retro/
reports/orphan_well_calibration/
reports/phase65s/
reports/phase65v/

# 2026-05-15 cleanup sweep -- time-stamped scientific output snapshots
# that regenerate nightly from their owning scripts.  Hand-curated
# results that deserve git tracking should be promoted to a different
# path (e.g. data/private/) on a per-file basis.
reports/science/*Z.json
reports/orphan_wells/*Z.md
reports/orphan_wells/*Z.json
reports/orphan_wells/aria_gunw_audit_*.md
reports/triple_couplings/
reports/inverse_hit_rate/
reports/frequency_atlas/atlas_v*_2026-*.json
reports/frequency_atlas/atlas_v*_2026-*.md
reports/phase65r/convergence_fire_readiness.*
reports/phase65r/tohoku_validation.csv

# Additional 2026-05-15 sweep -- subdirs + date-stamped outputs not
# covered by the patterns above.
reports/predictive_geology_results_*.json
reports/reverse_causal/
reports/phase65t-AUDIT/
reports/science/tensor_eq_retro_*.json
reports/sleeping_giants_baseline_audit_*.md
reports/south_millard_oil_play_*.md

# One-shot date-stamped runner scripts.  Stay on AX41 for historical
# context (the operator may want to re-read what was run on that date)
# but never get into source control -- they're not re-run as-is and
# the date in the filename is their tombstone.
scripts/_apr*_ax41_runner.sh
scripts/overnight_run_2026*.sh
scripts/queued_basin_chain_*.sh

# D.4 operator contact emails (PII; per-deployment config)
config/d4_operator_contacts.json

# Phase 65y-OG-FAIRWAY (May 21 2026): track curated reference data +
# pre-registered backtest results for the passive_hc_composite work
# even though data/ is broadly gitignored at line 23.
!data/moulton_2005_fig5_anomalies.csv
!data/backtest_passive_hc_composite_*.json
!data/backtest_ax41_passive_hc_composite_*.json
!data/backtest_ax41_phc_v0_*.json
!data/moulton_fig5_phc_v0_*.json
# Phase 65y-OG-FAIRWAY (May 22 2026): Western US Oil Target Atlas
# (curated reference, USGS 2025 + Moulton 2005 + PMRI 2026 combined).
!data/western_us_oil_target_atlas.csv
# Phase 65y-OG-FAIRWAY (May 22 2026): multi-physics validation results
# against USGS 2025 FS-2025-3032 province MMBO.
!data/validate_a1_hvsr_eastwest.json
!data/validate_a2_chlorosis_by_province.json
!data/validate_usgs_multi_physics_by_province.json
!data/validate_usgs_tropomi_ch4_by_province.json
!data/validate_a1b_hvsr_station_targeted.json
!data/validate_usgs_nure_radiometric.json
!data/validate_usgs_nure_local_anomaly.json
# NURE GeoTIFFs are freely downloadable from USGS ScienceBase
# (DOI 10.5066/P9YEAFHI, ~45 MB total).  Not tracked in git.
data/nure/

# Scratch dirs (one-shot audit scripts, OCR input snippets, build-script
# outputs).  Phase 65w-VERIFY May 25 cleanup -- formalize the gitignore
# rule so subsequent `git status` doesn't surface these as untracked.
_tmp/
_tmp_well_ocr/

# Auto-generated by scripts/parse_oso_blq_to_otl_dict.py from OSO Chalmers
# BLQ reply files. Regenerated on every fresh BLQ ingest. Not source code.
cross_physics/_otl_path_a_blq.py

# MARS-SCI monthly-cron baseline reports (rewritten on the 1st by
# mars_a4_helio_tomography_v0p1.py + mars_earth_cavendish_G_measurement.py;
# only run_at_utc/wall_time_s churn, physics stable). The scientific
# commitment is the BTC-anchored locked_sha256 in hypotheses/locked/, not
# these living report files -- so don't version-control them.
reports/mars_sci/a4/mars_a4_v0p1_baseline.json
reports/mars_sci/a4/mars_a4_v0p1_baseline.md
reports/mars_sci/cavendish/mars_earth_cavendish_v0p1_baseline.json
reports/mars_sci/cavendish/mars_earth_cavendish_v0p1_baseline.md

# Cron-overwritten scorecards + caches (fixed filenames regenerated daily/
# weekly; nothing in api/ or dashboard/ reads them -- regenerated views over
# the ledger DB). Tracking them churns the tree like the MARS-SCI baselines.
reports/insurance_track_record.json
reports/insurance_track_record.md
reports/large_event_calibration_scorecard.json
reports/large_event_calibration_scorecard.md
reports/foreshock_skill_scorecard.md
reports/stacking/coherent_transient_cache_run.json
reports/validation/stage_d_brawley_m49.json
reports/validation/novelty_match_coupling.md

# >>> git-churn-auditor (managed; cron-overwritten tracked files) >>>
data/yellowstone_hydrothermal_events.csv
reports/newspaper_mining_summary.md
reports/region_coverage_audit.json
# <<< git-churn-auditor <<<

# Autonomous-scientist review queue: transient staged candidate hypotheses
# awaiting HUMAN approval (scripts/autonomous_scientist/orchestrator.py run).
# These are proposals, not commitments -- the durable record is what a human
# approves into hypotheses/registered|locked|tested/ via hypothesis_registry.py.
# Keep the directory (via .gitkeep) but don't version-control the working items.
hypotheses/review_queue/*.json

# Regenerable discovery-engine / D.1 probe + diagnostic OUTPUTS (re-run on AX41;
# canonical record = committed hypotheses/ JSON + curated .md reports). Tracking
# these JSON data-views snagged AX41's */15 auto-pull. The .md writeups stay tracked.
reports/tidal_fault_criticality/*.json
reports/discovery_engine/
reports/slichter/*.json
data/discovery_engine_test_count.json
# orphan_wells summary is a daily-regenerated data-view (refresh_hybrid_atlas.sh
# --summary-out); untracked + ignored so the daily refresh stops dirtying the
# tree and stalling the auto-pull.  (mars_a7 reruns now write only to the
# already-gitignored data/private/mars_sci/a7; its tracked reports/ snapshot is
# frozen at the BTC-anchored v0.1 first-run.)
reports/orphan_wells/orphan_wells_basin_summary.json
# Weekly novel-coupling digests are auto-generated; ignore new ones so an
# untracked digest can't collide with a pulled file (older committed digests
# stay tracked as historical record).
reports/novel_couplings/digest_*.html
reports/novel_couplings/digest_*.md
reports/novel_couplings/novel_couplings.rss

# Full crontab sweep (2026-06-09): cron-regenerated reports/ MIRRORS that
# stall AX41's auto-pull when their weekly/daily/quarterly job fires.  Each
# script's CANONICAL output is data/private/mars_sci/<x>/ (already gitignored)
# or the anchored hypotheses/ JSON; these reports/ copies are review mirrors.
# mars_a7 is the one exception kept tracked (source-fixed to stop the mirror;
# its committed snapshot is the frozen BTC-anchored v0.1 first-run record).
reports/mars_sci/a2/
reports/mars_sci/a3/
reports/mars_sci/cavendish/
reports/mars_sci/methane_hydrate/
reports/mars_sci/ree/
reports/mars_sci/w2/
reports/mars_sci/w6/
reports/phase_d1_a6_v4_l4_admixture_24station_path_a_blq.json
# backtest_novelty_match_coupling.py (weekly): .md already ignored above-block;
# the .json is the same regenerable data-view.
reports/validation/novelty_match_coupling.json
# utah_ei_enrichment_parallel.py (DAILY 02:00 UTC) regenerates this enriched
# data-view; consumers read it from disk.
reports/utah_og_targets_enriched.json

# EMTF ingestion cache + eval output (regenerable; canonical record = hypotheses/tested/).
data/emtf/

# De-confounding diagnostic output (regenerable; recipe in scripts/deconfound_confounder_diagnostic.py).
reports/deconfound/
data/email_suppression.db

# UGS gravity ingestion scratch + cached grid (regenerable from public UGS ZIPs;
# recipe in scripts/ingest_ugs_gravity_basement.py). Grid is a derived artifact.
data/ugs_gravity/
data/ugs_gravity_grid.npz

# cron-regenerated result artifact (was blocking AX41 auto-pull)
reports/airport_array/tide_stack_result.json

# Subsurface Twin generated viewers (regenerate via build_site_model.py)
reports/subsurface_twin/*.html
reports/subsurface_twin/*.vtm
data/das_real/
data/auger_scaler/
data/imminent_shadow.jsonl

# cron/cache outputs -- regenerated on AX41, not deploy deps (keep AX41 tree clean)
reports/calibrated_band_coverage.json
data/orphan_wells_by_basin.csv
data/upstream_cache/fallback/usgs_nhd_springs_fallback.json.gz
*.bak_floors
*.bak.cutoff
data/utah_wells/
data/state_wells/
data/septic/
data/mineral_estate/
data/repda_mexico/
data/plss/
data/glo_cache.sqlite
data/borovoye/
reports/deep_earth/passive_body_wave_result.json

# research-library nightly-regenerated join artifacts (timestamped every run;
# tracking them would perpetually dirty the prod tree and block auto-pull)
research_library/provenance_report.json
research_library/uncarded_hypotheses.json

# Grok codebase-audit raw per-batch outputs (~7-8 MB across tiers 1-4).
# Keep tracked: consolidated_findings_tier*.json, synthesis_merged_tier*.json,
# progress.log. Everything else (per-batch adv/con JSON, per-chunk synth,
# merge intermediates, pids, per-run logs) is regenerable noise.
reports/grok_codebase_audit_raw/*
!reports/grok_codebase_audit_raw/consolidated_findings_tier*.json
!reports/grok_codebase_audit_raw/synthesis_merged_tier*.json
!reports/grok_codebase_audit_raw/progress.log
# DM K1 adjudication hash-pinned external series (prereg v2.1 Sec. 3):
# F10.7 (LISIRD), GFZ Kp definitive, NMDB OULU+NEWK, trimmed to 1991+,
# sha256-recorded in PINS.json + frozen frequency lists.  Small reference
# inputs required by scripts/dm_mag_k1_adjudication_v2.py.
!data/external/
data/external/*
!data/external/dm_k1_pins/

# Confidential third-party material staged in the working folder.
# _active_today/ is NOT ignored as a whole -- 5 files in it are tracked -- so a
# confidential document placed there is one `git add -A` away from being
# published. That exact over-staging happened on 2026-08-10 (224 files, 275k
# insertions, corrected in 500e2be1). The canonical copy of anything matched
# here lives in data/private/; the copy here is a working convenience only.
_active_today/kernel_identification_note_for_aaron*
_active_today/*CONFIDENTIAL*
_active_today/*_INTERNAL*

# Kept untracked deliberately: the *_send* signature-round copy. The repo
# DOES track reports/DeepMap_AI_Shareholders_Agreement.docx and 130 other
# .docx by long-standing convention -- do not broaden this into a blanket
# docx rule (added 2026-08-11).
reports/DeepMap_AI_Shareholders_Agreement_send.docx
data/fcc_fm/

# Utah well cache -- rebuildable from orphan_wells_by_basin.csv + NWIS, ~40 MB
data/utah_wells.db
data/utah_wells.db-shm
data/utah_wells.db-wal

# Magnetic-work fetched-data caches: regenerable from the fetchers, ~10 MB, not source
_active_today/mag_diff_demo_cache/
_active_today/mag_latam_cache/
scripts/igets/trackQ_corrected_tables_v13.json
!data/rock_glacier_atlas/
!data/rock_glacier_atlas/timpanogos_gravity/
!data/rock_glacier_atlas/timpanogos_gravity/*.csv
!data/rock_glacier_atlas/timpanogos_gravity/*.txt
!data/rock_glacier_atlas/timpanogos_gravity/*.py
!data/rock_glacier_atlas/timpanogos_gravity/*.m
