# Build artifacts
target/
dist/
build/
.next/
.svelte-kit/
.solid/
out/

# Dependencies
node_modules/
.pnpm-store/

# Environment & secrets
.env
.env.*
!.env.example

# IDE / OS
.DS_Store
Thumbs.db
*.swp
*.swo
.vscode/settings.json
.idea/

# Logs
*.log
server_err.log

# Temporary files
*.tmp
*.bak

# Compiled Mojo outputs
/tmp/test_*

# Archive — planning docs & research
archive/
**/ARCHITECTURE.md
**/PLAN.md
**/STATUS.md
**/TODO-NEXT.md
# Exception: the framework-excellence program's master plan is a tracked deliverable.
!docs/framework-excellence/PLAN.md
**/EXECUTION.md
**/CHECKLIST.md
**/NEUTRON_FINISH_CHECKLIST.md
**/BENCHMARK_UPDATE.md
**/competitive-analysis*.md
**/PARITY-COMPARISON.md
**/COMPETITOR-GAPS.md
**/AUDIT-REPORT.md
**/ai-ml-database-research.md
**/SPRINT-*.md
**/SPRINTS-*.md
**/IMPLEMENTATION-COMPLETE.md
**/IMPLEMENTATION_PLAN.md
**/COMPLETION_REPORT.md
**/ENGINEERING_EFFORT_ANALYSIS.md
**/PROJECT_STATUS_*.md
**/ONE_WEEK_RELEASE_PLAN.md
**/TECHNICAL_DEEP_DIVE.md
**/FULL_STACK_ANALYSIS.md
**/MULTI_LANGUAGE_CLIENT_ANALYSIS.md
**/NUCLEUS_CLIENT_SPEC.md
**/ORM_CLIENT_STUDIO_DECISION.md
**/NEUTRON-VS-REMIX.md
**/NEUTRON-FEATURE-AUDIT.md
**/ECOSYSTEM_*.md
**/DOCS_API_ECOSYSTEM.md
**/rust-PLAN.md
**/DEFER-EXAMPLE.md
**/URGENT-NOTE.md
**/QUICK-REFERENCE.md
**/ASTRO6-NEXTJS16-FEATURES.md
**/SVELTEKIT-SOLIDJS-FEATURES.md
**/REMIX-FEATURES-TO-ADOPT.md

# Vercel parity / product strategy research (local only)
/docs/VERCEL_PARITY_BACKLOG.md
/docs/design/

# Planning & audit docs
**/NUCLEUS-AUDIT.md
**/NUCLEUS-ROADMAP.md
LAUNCH_PROMPTS.md

# Benchmark & debug artifacts
**/benchmark_results.json
**/compete_results.json
**/clippy_out.txt
**/clippy_remain.txt

# Deprecated
mobile-preview/

# Third-party benchmark apps are tracked like every other subject app — an
# ignored subject is a benchmark row nobody else can reproduce. Their own
# .gitignore files keep node_modules and build output out.

# Observe (separate project)
typescript/apps/observe/

# Zig build artifacts
zig/.zig-cache/
zig/zig-out/

# Mojo validation reports, research, and internal specs
mojo/reports/
mojo/study/
mojo/specs/

# NOT ignored: typescript/.turbo-ls-normalized.json. It looks like turbo cache
# and was filed here as "Turbo internal", but it is the authored BASELINE that
# `pnpm run ci:workspace` compares the workspace graph against. Ignoring it made
# the check fail on every CI run with "Missing snapshot file" — a gate that can
# only pass on the laptop that generated it is not a gate.

# Scratch / dev tooling files
**/do_edit.py
**/edit_distributed.py
**/coord_lines.py
**/coord_methods.rs

# Rust framework (rust/) — the SOURCE is tracked. Only the cargo build output is
# ignored. (Earlier this was `/rust/` under the mistaken belief the source lived
# in `rs/`; `rs/` was renamed to `rust/` in 6079213, so `/rust/` was silently
# excluding the entire framework from version control. Fixed to ignore only target/.)
/rust/target/

# Site build output (source is tracked, dist is not)
typescript/apps/site/dist/
typescript/apps/site/.neutron/
# Same for the playground: .neutron/runtime/entry.node.ts is emitted by
# `neutron-ts build`, so a tracked copy goes stale the moment the codegen
# changes and dirties the tree on every build.
typescript/apps/playground/.neutron/

# Claude internal
.claude/

# Python
__pycache__/
*.pyc
*.pyo
.venv/
venv/

# Rust — track the framework + engine lockfiles for reproducible builds.
# (The `!rs/Cargo.lock` exception was stale: `rs/` was renamed to `rust/` in
# 6079213, so the framework lockfile silently went untracked.)
Cargo.lock
!rust/Cargo.lock
!nucleus/Cargo.lock
# Database files
*.db

# Rust build artifacts (added after filter-repo cleanup of history)
**/target/
**/debug/
*.rlib
*.rmeta
*.rcgu.o

# ---------------------------------------------------------------------------
# Working docs, notes and context — local only, never committed
# ---------------------------------------------------------------------------
# Everything above this block is a DENYLIST OF EXACT FILENAMES, added reactively
# one name at a time. That shape cannot hold: a working note is tracked by
# default until somebody remembers to add its exact name here, and the rule only
# ever arrives after the file already exists. It also does nothing to a file that
# is already tracked -- `.gitignore` does not untrack -- which is how
# `nucleus/PARITY-COMPARISON.md` sat public on the GitHub mirror from 2026-07-20
# while both the ignore list and the document's own first line called it
# local-only.
#
# The patterns below are CONVENTIONS instead: name a note in any of these shapes
# and it is ignored the moment it is created, without an edit here. Prefer them
# for anything new.
#
# `.github/scripts/check_ignored_not_tracked.py` enforces the whole file: it
# fails if any tracked path matches an ignore rule, so intent and reality cannot
# drift apart again silently.

# Private planning trees. `_internal/` is its own private git repo (Forgejo
# `Tyler/neutron-internal`) — gitignored here so the public repo never sees it,
# versioned there so it is not single-copy on one laptop.
/_internal/
**/_internal/
**/_notes/
**/_scratch/
**/.notes/

# Note/context/session filename conventions
**/INTERNAL.md
**/NOTES.md
**/*_NOTES.md
**/*-NOTES.md
**/NOTES-*.md
**/SESSION_*.md
**/SESSION-*.md
**/HANDOFF*.md
**/*_HANDOFF.md
**/SCRATCH*.md
**/WIP*.md
**/DRAFT*.md
**/TODO.md
**/TODO-*.md
**/BRAINSTORM*.md
**/RESEARCH-*.md
**/*-RESEARCH.md
**/POSTMORTEM*.md
**/RETRO*.md
**/DECISIONS.md
**/OPEN_WORK.md
**/PROGRESS.md
**/ORCHESTRATION.md
**/GROUND_TRUTH.md

# The universal escape hatch: any file may be made local-only by adding `.local`
# before its extension. Use this instead of extending the denylist above.
**/*.local.md
**/*.local.txt
**/*.local.json
**/*.local.*

uv.lock

# Conformance executor build output. `go build ./...` in the executor directory
# drops a binary named after its module; it is a 10 MB artifact of running the
# suite, not part of it.
conformance/live/executors/go/neutron-live-conformance-go
conformance/live/executors/rust/target/

# Zig conformance executor build output.
conformance/live/executors/zig/.zig-cache/
conformance/live/executors/zig/zig-out/
uuid
status
