# Rust build artifacts
/target
**/*.rs.bk

# Snapshot of the last FTP upload (mirror of what is live; source of truth is /WEBSITE)
/dist-website

# Release zips served from neurones3d.com/downloads/ (built artifacts, uploaded by FTP)
/WEBSITE/downloads/

# Classifier training corpora + eval dumps (multi-GB CSV exports, regenerated from DATA)
/EXPERIMENTS

# Python bytecode
__pycache__/
*.pyc

# N3D point-cloud LOD caches (regenerated from source data)
*.n3dcache

# Large sample datasets (kept locally, not in git)
/DATA

# Reconstruction: native ONNX Runtime lib + downloaded model weights (provisioned, not vcs)
/runtime
/models/*
# …but EVERY classifier the build embeds with include_str! is committed, and the rule about what
# may ship is committed with it.
#
# This list is not a convenience. `include_str!` resolves at compile time, so a model that is
# missing from the repository is not a degraded build — it is a build that does not exist. Four of
# the eight were absent for exactly that reason: they were trained on this machine, embedded, and
# never added, and everything kept working here while a fresh clone could not compile the default
# configuration at all. `preflight.ps1` now checks this list against `rf.rs` so it cannot drift
# again.
#
# `rf_fine.json` is deliberately NOT here: at 73 MB it is not embedded, and nothing reads it at
# build time.
!/models/DO-NOT-BUNDLE.md
!/models/classifier
/models/classifier/*
!/models/classifier/rf.json
!/models/classifier/rf_indoor.json
!/models/classifier/rf_outdoor.json
!/models/classifier/rf_power.json
!/models/classifier/rf_power_dev_coarse.json
!/models/classifier/rf_power_dev_wire.json
!/models/classifier/rf_street.json
!/models/classifier/rf_street_ctx.json
!/models/classifier/rf_factory.json
!/models/classifier/rf_construction.json
*.onnx

# Neurones 3D capture API - server secrets & runtime stores (owner-provisioned)
# The real config holds the Resend API key; created on the server, never in git.
/WEBSITE/api/config.php
# The local developer overlay (dry-run mail, temp store). Machine-specific, and
# uploading it would silently stop the live forms from mailing anyone.
/WEBSITE/api/config.local.php
# Defensive: if the file store (rate limit / cooldown / tokens / log) is placed
# under api/ instead of the system temp dir, keep its artifacts out of git.
/WEBSITE/api/store/
/WEBSITE/api/*.log
/WEBSITE/api/pend_*.json
/WEBSITE/api/rl_*.json
/WEBSITE/api/cd_*.json

# OS / editor
.DS_Store
Thumbs.db
.vscode/
.idea/
license_signing.key

# Generated reports. The project keeps them in its vault; this is only the fallback
# `n3d-render-cli` uses when N3D_REPORTS is unset.
/reports/

# Python bytecode from the OPS tooling, and dated editor backups.
__pycache__/
*.py[cod]
*.bak-*

# An agent left this behind; nothing builds into it.
dist-site/

# The capture API's config and local overlay live ABOVE the web root (lib.php looks there first),
# so a copy of WEBSITE uploaded as it is carries no secret and no dry-run switch.
/n3d-config.php
/n3d-config.local.php

# FTP / server credentials kept on this machine only. Never committed, never uploaded.
/secret-poux.txt
secret-*.txt
*.credentials
