# ---- Owner bootstrap / secrets: NEVER commit ----
OWNER_BOOTSTRAP.local.md
*.local.md
.env
.env.*
!.env.example
*.dev.vars
.dev.vars
.dev.vars.*
secrets/
*.keystore
*.jks
keystore.properties
*.mobileprovision
*.provisionprofile
*.p8
*.p12
*.pem
*.cer
AuthKey_*.p8
google-services.json
GoogleService-Info.plist
service-account*.json
*-service-account.json
*.Zone.Identifier
*.Identifier

# ---- Build / deps ----
node_modules/
dist/
build/
.wrangler/
.turbo/
.cache/
coverage/
*.tsbuildinfo
.astro/
__pycache__/
*.pyc
.venv/
.pytest_cache/
*.egg-info/
.mypy_cache/
.ruff_cache/

# ---- Native build outputs ----
apps/native/ios/App/Pods/
apps/native/ios/App/Podfile
apps/native/ios/App/Podfile.lock
apps/native/ios/App/DerivedData/
apps/native/ios/App/xcuserdata/

# Store screenshots are generated, never authored: scripts/screenshots/capture-ios.mjs rebuilds the
# whole set from the real app in one command, and a stale PNG that outlived the UI it photographed
# is worse than no PNG at all.
apps/native/screenshots/
apps/native/ios/App/App.xcworkspace/
apps/native/android/.gradle/
apps/native/android/build/
apps/native/android/app/build/
apps/native/android/local.properties
apps/native/android/.idea/
*.apk
*.aab
*.ipa

# ---- OS / editor ----
.DS_Store
Thumbs.db
.idea/
.vscode/*
!.vscode/extensions.json
GOOGLE_OAUTH_CLIENT_ID=109122582616.md
# Any Google client-secret JSON, whichever client it belongs to. Naming one client here dated
# the rule to that client and quietly implied it was the canonical one.
client_secret_*.apps.googleusercontent.com.json

# ---- Provider OAuth client credential files (owner bootstrap; never commit) ----
client_secret*.json
*.local.json
*-credentials.json
*_credentials.json
oauth-client*.json
GOOGLE_OAUTH_*
*CLIENT_ID*
*CLIENT_SECRET*

# Local agent worktrees and settings
.claude/

# ---- Generated proof artifacts: run them, do not commit them ----
# The creative harness writes a timestamped run. A run is evidence for the person who ran it,
# on the day they ran it, with the lane that answered; a committed one is a claim about creative
# quality that nobody can check.
docs/design/creative-proof/
