Author SHA1 Message Date
clawbot 92b7c4f146 Add AGENTS.md with the repository's rules for agents (closes #246)
check / check (push) Successful in 6m25s
AGENTS.md holds the branching model, the entrypoints, the editing rule
and two iron rules: query strings are logged as received, and the
trusted-proxy default is the RFC 1918 set. README links it; SPEC.md
step 2 now states that default and that a given list replaces it.

Model: opus-5-5
2026-11-09 19:10:06 +00:00
3 changed files with 42 additions and 0 deletions

No files matched your search

+39
View File
@@ -0,0 +1,39 @@
# Agents
These are the rules for agents working on this repository.
## Branches
- `main` is the stable branch, and `next` is the development branch.
- Every PR is cut from `next` and targets `next`.
- Only sneak merges `next` into `main`.
- Each issue lands on `next` as one squashed commit whose title ends
` (closes #N)`. A PR may instead be exactly two commits: first tests that fail
against the current code, then the fix with no test assertion changed. Such a
PR lands as both commits.
## Entrypoints
- Work through the `Makefile` targets, which call the scripts in `script/`. The
README's [Entrypoints](README.md#entrypoints) section lists them.
- Never run `go`, `golangci-lint` or prettier directly.
- `make check` passes before every push.
## Editing
- Edit files by hand.
- Format only with `make fmt`, and run it before committing any change.
## Iron rules
- The request log records query strings exactly as received.
- Secrets belong in POST data. An app that puts a secret in a query string
is fixed in the app.
- Never propose redacting a query string, Gitea's `?token=` included.
- The default of `SWRP_TRUSTED_PROXIES` is the RFC 1918 set.
- The set is:
- `10.0.0.0/8`;
- `172.16.0.0/12`;
- `192.168.0.0/16`.
- `SPEC.md` states that default.
- Forwarded headers count only when the peer is a trusted proxy.
+1
View File
@@ -748,6 +748,7 @@ on the host.
- [`EVALUATION.md`](EVALUATION.md): what already exists, what each tool covers - [`EVALUATION.md`](EVALUATION.md): what already exists, what each tool covers
and misses, and why none was adopted. and misses, and why none was adopted.
- [`REPO_POLICIES.md`](REPO_POLICIES.md): the policies this repository follows. - [`REPO_POLICIES.md`](REPO_POLICIES.md): the policies this repository follows.
- [`AGENTS.md`](AGENTS.md): the rules for agents working on this repository.
- [`docs/settings.md`](docs/settings.md): every setting and the values it takes. - [`docs/settings.md`](docs/settings.md): every setting and the values it takes.
- [`docs/rules.md`](docs/rules.md): the rule file format and the default file. - [`docs/rules.md`](docs/rules.md): the rule file format and the default file.
- [`docs/admin-endpoints.md`](docs/admin-endpoints.md): the endpoints under - [`docs/admin-endpoints.md`](docs/admin-endpoints.md): the endpoints under
+2
View File
@@ -133,6 +133,8 @@ request log's `heuristic` field gives that name. `refusal_limit` and
1. `GET /_sww/healthz` is answered at once by `rproxy`, before any check, so a 1. `GET /_sww/healthz` is answered at once by `rproxy`, before any check, so a
health checker never needs an exemption and is never refused. health checker never needs an exemption and is never refused.
2. The client is identified. 2. The client is identified.
- `SWRP_TRUSTED_PROXIES` is `10.0.0.0/8`, `172.16.0.0/12` and
`192.168.0.0/16` by default. A list given replaces them.
- If the TCP peer is inside `SWRP_TRUSTED_PROXIES`, `X-Forwarded-For` is - If the TCP peer is inside `SWRP_TRUSTED_PROXIES`, `X-Forwarded-For` is
walked from the right, and the first address outside those netblocks is walked from the right, and the first address outside those netblocks is
the client. If every address is inside them, the leftmost is, so that a the client. If every address is inside them, the leftmost is, so that a