.build/
.swiftpm/
DerivedData/
build/
dist/
dist-mas/
*.xcodeproj
.DS_Store
.env
# Ignore .claude/ contents individually (not the directory itself) so the
# negation below can work: git never re-includes files under an excluded
# DIRECTORY, so the previous `.claude/` form made any negation dead.
.claude/*
# except the shared project settings: harness-enforced approval prompts
# (owner guardrail, 2026-07-14). Everything else in .claude/ stays local.
!.claude/settings.json

# App Store provisioning profile and any other local-only signing material.
secrets/

# Local scratch docs (kept uncommitted by convention)
technical-docs/
BUILDING.md

# Release notes are staged here, then copied into the homebrew-whatcable tap
# repo and used as the GitHub release body. The tap repo is the canonical home.
release-notes/

# USB-IF spec PDFs (copyrighted, not for distribution)
reference/
screenshots-pro/

# IOKit investigation probes (compiled binaries and scratch output).
# probes/test-kit/ contains the C sources bundled in the app and is tracked.
probes/*
!probes/test-kit/

# Eleventy site tooling
node_modules/

# Local author crib sheet for the blog (gitignored by convention)
BLOG.md

# Decap CMS fallback media folder. The /admin uploader sends images to R2 via
# the custom media library, but Decap still requires media_folder set. This
# folder should never receive real files; ignore it just in case.
src/blog/uploads/
AGENTS.md

# Wrangler / Miniflare local state (geolocates the developer)
.wrangler/

# Internal architectural decision log
DECISIONS.md

# The research library and probe corpus are maintained separately and linked
# in here as `research`. The link is never tracked: a tracked symlink would land
# in `git archive` output and resolve to nothing in a clone that has no such
# checkout alongside it.
research

# The local data folder (format 1 runs from KV, never in git), linked the same
# way as `research-data`.
research-data

# Local tool folder. Never tracked.
.orca/

# Python bytecode (from research/build scripts like inspect-probe.py)
__pycache__/
*.pyc

# USB-IF per-XID response cache (build-cable-db.swift). The compiled
# cable_certs table in whatcable.db is what ships, not this cache.
.cert-cache/
