# Build artifacts
/bin/
/dist/
*.exe
*.test
*.out
# Locally-built CLI binary from `go build -o ./hogland ./cmd/hogland`.
# Anchored to the repo root so it doesn't shadow the cmd/hogland/ source dir.
/hogland

# Web console assets are embedded into hogplane via go:embed at build
# time (see hogplane/cmd/hogplane/console_embed.go). The directory is
# committed with just a .gitkeep so local `go build` works; the actual
# dist payload lives in CI's Docker build stage, never in git.
/hogplane/cmd/hogplane/console/*
!/hogplane/cmd/hogplane/console/.gitkeep

# OpenAPI spec is pure codegen from the Huma handlers (see
# cmd/openapi-gen). Run `pnpm --dir web gen:api` locally to refresh,
# or let CI / the Docker build regenerate it. Source of truth is the
# Go handlers + shared/types.go, not this file.
/openapi.yaml

# The landing page at GET / is pure codegen from openapi.yaml +
# hogplane/cmd/hogplane/index.html.tmpl (see scripts/gen-index). Same
# treatment as openapi.yaml above: never committed, regenerated by
# `task gen-index` locally and by the index-gen stage of the Docker
# build. `go build` on a fresh clone needs the file to exist because
# main.go's `//go:embed index.html` is path-specific — run
# `task gen` first.
/hogplane/cmd/hogplane/index.html

# Local state / build caches
/tmp-*/
/.cache/
*.log

# Editor
.vscode/
.idea/

# Local dev tokens / creds
/tmp/hog-*
/tmp/_*
# tmp-hogbox/ is scratch space for the e2e test scripts — it holds a
# real bearer token + SSH keypair after signup. Never commit it.
/tmp-hogbox/

# Per-user Claude Code permission overrides (allow/deny rules tied to
# this machine — not portable across contributors).
/.claude/settings.local.json
/.posthog-code

# Python SDK build artefacts. The generated models file IS committed (the
# drift gate enforces it); only the venv/cache/build dirs are ignored.
/sdk/python/.venv/
/sdk/python/dist/
/sdk/python/build/
/sdk/python/*.egg-info/
/sdk/python/.pytest_cache/
/sdk/python/.ruff_cache/
/sdk/python/.ty_cache/
__pycache__/
*.py[cod]