__pycache__/
*.py[cod]
*.egg-info/
build/
dist/
.venv/
venv/
.pytest_cache/
.hypothesis/
.coverage
htmlcov/
.mypy_cache/
.ruff_cache/
.DS_Store

# AGENTS.md was ignored here from 2026-08-26 to 2026-08-31, on the ruling that
# an unenforced second copy of CLAUDE.md is the defect this project has spent
# the most time repairing. The ignore is REMOVED, and what removed it is that
# ruling's own failure mode: ignoring a file is not a mechanism. It came back
# anyway -- untracked, four days stale, still printing the pre-layering test
# recipe -- and an agent session read it as this repository's instructions,
# because that is the name those tools look for first. Nothing could have
# reported it, precisely because it was ignored.
#
# It is now tracked and held byte-identical to CLAUDE.md by
# tests/test_agent_notes_are_one_file.py, which is the price CLAUDE.md itself
# named for keeping it. One document, two names, one test.

# Session handover notes: written for one execution session, addressed to the
# next reader, true only while that session is open. The design record that
# outlives them is the plan under docs/superpowers/plans/, which IS committed
# and carries a 文档状态 like every other page.
_*handoff*.md
_*HANDOFF*.md

# The test and verification runners' own scratch, per CLAUDE.md's recipe.
# Keep the prefixes narrow: repository documentation and arbitrary XML/log
# files remain visible, while labelled runs such as run.p3.* and verify.gate.*
# do not invite an accidental `git add -A`.
run*.log
run*.exit
run*.junit.xml
verify*.log
verify*.exit
verify*.junit.xml

# The same artifacts in their DIRECTORY form. The patterns above match flat
# files only, so `runs/p3-baseline-XXXX/{log,exit,junit.xml}` and a session
# scratch directory both stayed visible in `git status` after those patterns
# landed -- the very condition they were added to close. A check that asks
# `git check-ignore` about four names it chose itself cannot see the layout it
# did not ask about; the R0 close-out's gitignore row is corrected on this
# point rather than left reading as complete.
runs/
scratchpad/
