# Build outputs.
/out/

# Separate-compilation artifact dirs. `ww build` and explicit `ww test -o`
# leave caller-owned <stem>.sepwork/ at the selected artifact stem; they
# refuse to replace an existing tree. `ww run` and no-output single-file tests
# put the executable and scratch in one driver-owned temporary directory and
# remove both. Byte gates read selected files deliberately, then remove the
# exact tree, so it is transient-not-tracked.
*.sepwork/

# Claude Code session artifacts.
.claude/
.ai/

# Per-module build artifacts. The .combined.ww files under selfhost/
# are intentionally tracked — they're frozen bootstrap inputs.
selfhost/**/*.o
selfhost/**/*.s

# `ww build` on a lib/ module leaves a .combined.ww next to the
# source. None of these are bootstrap inputs (those are under
# selfhost/cmd/*/main.combined.ww) — they're just transient.
# `ww test lib/foo` also drops the .s/.o triplet for *_test.ww.
lib/**/*.combined.ww
lib/**/*.s
lib/**/*.o

# examples/ build outputs. Each example has its own Makefile that
# leaves the .s/.o/.combined.ww plus a stripped binary behind.
examples/**/*.o
examples/**/*.s
examples/**/*.combined.ww

# `test/wcc/data/` holds .ww fixtures fed to the C-side wcc tests
# (e.g. attest_nondrop.ww). `ww build` against any of those drops the
# usual triplet next to the source — only the .ww is tracked.
test/wcc/data/*.o
test/wcc/data/*.s
test/wcc/data/*.combined.ww
test/wcc/data/**/*.o
test/wcc/data/**/*.s
test/wcc/data/**/*.combined.ww
examples/mandelbrot/mandelbrot
examples/cmatrix/cmatrix
examples/lisp/lisp
examples/lisp/lisp_test

# Stage-0 binaries under bootstrap/<arch>/. Untracked by default —
# committing them is the v1.0 lock per PLAN.md (the new trust
# surface). `make bootstrap-snapshot` populates the dir from the
# current wwstage; `make nocc` verifies they self-reproduce.
# To ship, `git add -f bootstrap/amd64/{ww,w6c,w6a,w6l}` explicitly.
bootstrap/*/*
