You are reading one repository to answer a single question for an operator who is
configuring an automated dispatcher. You have been given
reading tools only: there is no shell, no editor and no verb here, so reading and
answering is the whole of what you can do.

## The question

What are the **pre-push gates** for `{{REPO}}` (branch `{{BRANCH}}`)? A pre-push
gate is a command a change must pass locally *before* it is pushed, and the answer
is only useful if it matches what CI actually runs.

## Where to look

In this order, stopping when you have enough:

1. CI workflow definitions — `.github/workflows/*.yml`, or the equivalent for
   whatever CI this repo uses. This is the authority: it is what will fail a PR.
2. `package.json` scripts, `Makefile`, `justfile`, `Taskfile.yml`, `tox.ini`,
   `pyproject.toml`, `Cargo.toml`.
3. Any `CONTRIBUTING.md` / `AGENTS.md` / `CLAUDE.md` that names a pre-push
   routine.

## Three traps, each of which produces a wrong answer

- **Whole tree, not source directory.** If CI lints the repository and a script
  lints only `src/`, the gate is the repository-wide command. A gate narrower than
  CI is how a lint error reaches the runners with nobody watching.
- **Cheap only.** Gates run on a shared host, many at once. Include type checks,
  lint and unit tests. **Exclude** docker builds, image builds, production builds,
  browser/e2e suites, and anything that needs a service or a credential — CI owns
  those.
- **An honest "no gates" is a real answer.** If this repo genuinely has no cheap
  local check, say so with an empty list. Inventing a plausible `npm test` for a
  repo that has no test script produces a gate that fails on every push.

Each gate needs the **`cwd` it runs from**, relative to the repository root, as a
monorepo's checks usually do not run from the top. Use `"."` for the root.

## Answer

One fenced JSON block, nothing else after it:

```json
{
  "gates": [{ "cmd": "bun run check", "cwd": "." }],
  "evidence": "one line naming the files you read that establish these"
}
```

`evidence` is what lets the operator judge your answer without repeating your
reading. Name files, not impressions.
