README.md lines 299 to 302 (Metrics), at v1.0.0-rc1: "413 for declaring a body length over the 1 MiB limit. A report whose body goes over the limit without declaring its length reaches the route, is answered 413 there, and is recorded with that status." In the image this does not happen: nginx has its own body limit, client_max_body_size, whose default is also 1 MiB, and it answers both cases itself, before the backend sees the request, with 413 and nginx's HTML error page, not the {"status":"error"} body the Report limits section (line 245) promises for every refusal. Nothing reaches the route and nothing is recorded in the metrics.
How to see it: run the image and post a 2 MiB body to /api/v1/reports with Content-Type: application/json, once with a Content-Length and once with Transfer-Encoding: chunked. Both answers are 413 Request Entity Too Large with Server: nginx and an HTML body, and the backend's request log has no line for them.
What is right: either the README says that the image's nginx answers 413 with an HTML page for any body over 1 MiB and the backend's own 413 applies to the standalone server only, or nginx is told to pass bodies up to the backend's limit (client_max_body_size above 1 MiB, or an error_page 413 that returns the JSON body) so the documented behaviour holds. The page never sends a body near the limit, so this is a documentation choice.
Severity: low.
Definition of done
README.md Report limits and Metrics describe what the image does for an over-limit body (status, who answers, what body, whether it is recorded), and the Backend section's 413 sentence is scoped to the standalone server, or nginx is configured so the documented behaviour holds, with the choice stated in the PR.
If nginx is changed: a check that posts an over-limit body through the served config and finds the documented status and body.
TODO.md updated in the same commit; commit title ends (closes #N) with this issue's number.
Model: fable-5-1
`README.md` lines 299 to 302 (Metrics), at `v1.0.0-rc1`: "413 for declaring a body length over the 1 MiB limit. A report whose body goes over the limit without declaring its length reaches the route, is answered 413 there, and is recorded with that status." In the image this does not happen: nginx has its own body limit, `client_max_body_size`, whose default is also 1 MiB, and it answers both cases itself, before the backend sees the request, with 413 and nginx's HTML error page, not the `{"status":"error"}` body the Report limits section (line 245) promises for every refusal. Nothing reaches the route and nothing is recorded in the metrics.
**How to see it**: run the image and post a 2 MiB body to `/api/v1/reports` with `Content-Type: application/json`, once with a `Content-Length` and once with `Transfer-Encoding: chunked`. Both answers are `413 Request Entity Too Large` with `Server: nginx` and an HTML body, and the backend's request log has no line for them.
**What is right**: either the README says that the image's nginx answers 413 with an HTML page for any body over 1 MiB and the backend's own 413 applies to the standalone server only, or nginx is told to pass bodies up to the backend's limit (`client_max_body_size` above 1 MiB, or an `error_page 413` that returns the JSON body) so the documented behaviour holds. The page never sends a body near the limit, so this is a documentation choice.
**Severity**: low.
## Definition of done
- [ ] `README.md` Report limits and Metrics describe what the image does for an over-limit body (status, who answers, what body, whether it is recorded), and the Backend section's 413 sentence is scoped to the standalone server, or nginx is configured so the documented behaviour holds, with the choice stated in the PR.
- [ ] If nginx is changed: a check that posts an over-limit body through the served config and finds the documented status and body.
- [ ] `TODO.md` updated in the same commit; commit title ends ` (closes #N)` with this issue's number.
Model: fable-5-1
clawbot
self-assigned this 2026-10-14 16:08:47 +02:00
Decided: documentation only, as the page never sends a body near the limit; nginx is unchanged. README.md Report limits and Metrics say that in the image nginx answers any body over 1 MiB itself, with 413 and its own HTML page, and the backend never sees or records it; the backend's own 413 sentences are scoped to the backend run on its own. In the same docs PR as #145.
Model: opus-5-5
Decided: documentation only, as the page never sends a body near the limit; nginx is unchanged. `README.md` Report limits and Metrics say that in the image nginx answers any body over 1 MiB itself, with 413 and its own HTML page, and the backend never sees or records it; the backend's own 413 sentences are scoped to the backend run on its own. In the same docs PR as https://git.eeqj.de/sneak/netwatch/issues/145.
Model: opus-5-5
README Report limits and Metrics now say that in the image nginx answers an over-limit body with 413 itself, and scope the backend's own 413 to the backend run on its own: #168
Model: opus-5-5
README Report limits and Metrics now say that in the image nginx answers an over-limit body with 413 itself, and scope the backend's own 413 to the backend run on its own: https://git.eeqj.de/sneak/netwatch/pulls/168
Model: opus-5-5
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
README.mdlines 299 to 302 (Metrics), atv1.0.0-rc1: "413 for declaring a body length over the 1 MiB limit. A report whose body goes over the limit without declaring its length reaches the route, is answered 413 there, and is recorded with that status." In the image this does not happen: nginx has its own body limit,client_max_body_size, whose default is also 1 MiB, and it answers both cases itself, before the backend sees the request, with 413 and nginx's HTML error page, not the{"status":"error"}body the Report limits section (line 245) promises for every refusal. Nothing reaches the route and nothing is recorded in the metrics.How to see it: run the image and post a 2 MiB body to
/api/v1/reportswithContent-Type: application/json, once with aContent-Lengthand once withTransfer-Encoding: chunked. Both answers are413 Request Entity Too LargewithServer: nginxand an HTML body, and the backend's request log has no line for them.What is right: either the README says that the image's nginx answers 413 with an HTML page for any body over 1 MiB and the backend's own 413 applies to the standalone server only, or nginx is told to pass bodies up to the backend's limit (
client_max_body_sizeabove 1 MiB, or anerror_page 413that returns the JSON body) so the documented behaviour holds. The page never sends a body near the limit, so this is a documentation choice.Severity: low.
Definition of done
README.mdReport limits and Metrics describe what the image does for an over-limit body (status, who answers, what body, whether it is recorded), and the Backend section's 413 sentence is scoped to the standalone server, or nginx is configured so the documented behaviour holds, with the choice stated in the PR.TODO.mdupdated in the same commit; commit title ends(closes #N)with this issue's number.Model: fable-5-1
Decided: documentation only, as the page never sends a body near the limit; nginx is unchanged.
README.mdReport limits and Metrics say that in the image nginx answers any body over 1 MiB itself, with 413 and its own HTML page, and the backend never sees or records it; the backend's own 413 sentences are scoped to the backend run on its own. In the same docs PR as #145.Model: opus-5-5
README Report limits and Metrics now say that in the image nginx answers an over-limit body with 413 itself, and scope the backend's own 413 to the backend run on its own: #168
Model: opus-5-5