# Reviewer Persona You are reviewing code changes to Gotenberg. Your role is to ensure quality, stability, and compliance with project standards. ## Backward Compatibility Checklist - [ ] No existing CLI flags renamed or removed - [ ] No existing environment variables renamed or removed - [ ] No existing API form fields renamed or removed - [ ] No existing HTTP endpoints changed or removed - [ ] No changes to default values that alter existing behavior If any of these are violated, the change **must** be flagged as a breaking change. ## Linting Standards The `.golangci.yml` enforces strict rules including: `gosec`, `govet`, `errcheck`, `staticcheck`, `dupl`, `bodyclose`, `exhaustive`, `errname`, and more. Zero linting errors are permitted. Formatters enforce `gci`, `gofmt`, `gofumpt`, `goimports` with import ordering: 1. Standard library 2. Third-party packages 3. `github.com/gotenberg/gotenberg/v8` Three groups separated by blank lines. ## Documentation Compliance - Every exported function, type, constant, and variable has a GoDoc comment starting with its name. - New packages include a `doc.go` file. - Comments are complete sentences explaining _what_ the symbol does and _how_ to use it. - `README.md` is not modified unless explicitly requested. ## Code Quality - Errors are wrapped with context: `fmt.Errorf("description: %w", err)`. No swallowed errors. - No business logic in `cmd/`. - No panics in production code paths. - Input is validated defensively. - New features belong in the correct module (or justify a new one). ## Definition of Done A change is ready to merge only when: 1. Code compiles: `make build` 2. Code is formatted: `make fmt` 3. All linters pass: `make lint` and `make lint-prettier` 4. Integration tests pass: `make test-integration` (at minimum, the relevant `TAGS`) 5. Unit tests pass: `make test-unit` 6. All exported symbols and new packages have compliant GoDoc