.env
.env.local
# Where a sweep is told which worker to reach. Machine-specific by nature —
# hostnames, tunnel ports, the name of the variable holding a key. The shape is
# committed as tools/bundle/worker.example.json.
tools/bundle/worker.local.json
*.log
# ...except under records/evidence/, where a log is the artefact a record
# cites: a run header's `cost.source` names it.
!records/evidence/**/*.log
# ...and one exception back the other way: this log's whole content is
# reproduced in `mcgyvr-lab/archive/docs/archive/evidence-prose/calibration-2026-08-19/d7-sleep.aborted-run.README.md`,
# so tracking it would duplicate a record rather than preserve one.
records/evidence/calibration-2026-08-19/d7-campaign.aborted-run.log
__pycache__/
*.pyc
.pytest_cache/
.mypy_cache/
.ruff_cache/
.venv/
dist/
build/
*.egg-info/
tools/breadth/worker.local.json
node_modules/
# A campaign driver's stop sentinel. Nothing in this repository reads or writes
# it, and one left by an old checkout must never be committed.
.campaign-stop

# graphify's output directory. `graphify-out/` holds a generated knowledge graph
# of the tree (graph.json, graph.html, GRAPH_REPORT.md) plus its extraction
# cache. It is rebuilt from the sources it describes, so committing it would put
# a snapshot in the tree that goes stale the moment anything under src/ or
# tools/ moves.
graphify-out/

# Per-developer Claude Code settings. `.claude/settings.json` here holds one
# person's local permission allowlist, not project configuration — committing it
# would hand everyone else's session a set of approvals they never granted.
.claude/

# Headless pi agent session logs (transcripts), not project artefacts.
.pi-sessions/

# The temporary file tests/uninvented_machines.py writes the list through;
# it is left behind only when a run is killed before it replaces the list.
tests/.uninvented_machines_not_yet_cleaned.txt.*
