Filed unassigned and without a domain:* label — routing and grading are the triage seat's. Small, docs-only.
What is incomplete
content/docs/api/data-api.mdx is the page that documents the filter query parameter and its rejection behaviour specifically:
:22 — "filter | query | Filter expression (JSON). filters also accepted for backward compatibility. Malformed JSON is rejected with 400 INVALID_FILTER — never ignored.":68 — "400 INVALID_FILTER rather than dropped, because a dropped filter would …"
PR #8004 (#7390) adds a second condition that answers 400 INVALID_FILTER on the same parameter: sending it more than once. Per the maintainer's 2026-08-11 ruling, a repeated ?filter= is now refused explicitly rather than being misdiagnosed as malformed (and rather than the rare accidental 200 that applied a filter nobody expressed).
⚠️The page is not wrong — nothing there claims malformedness is the only cause, and the malformed-JSON sentence stays true. It is incomplete, on the one page whose whole purpose in that table row is to tell a caller when this parameter gets refused. Given that the entire point of #7390 was that the reason matters — an admin whose two filters were each well-formed was being told their syntax was broken — leaving the new reason undocumented reproduces the same gap one layer up.
Suggested shape: one clause on :22 naming repetition alongside malformed JSON, matching the shipped message (Repeated "filter" query parameter — send exactly one).
Why it is filed rather than ridden along
PR #8004 was already reviewed, enqueued and awaiting checks when this was found. Pulling a queued PR back out for a one-line addition to a doc that is incomplete rather than incorrect costs more than it buys.
Note the PR did check docs before writing — content/docs/protocol/kernel/http-protocol.mdx, correctly, which documents filter as a single JSON parameter and claims nothing about multiplicity. data-api.mdx is the page that turned out to matter.
Related: the drift checker did not flag it
data-api.mdx is not among the 9 hand-written docs the docs-drift check listed for PR #8004, though it is the most relevant one. Same mechanism as #7967: the check maps docs to packages by textual mention, so a page that describes a package's behaviour without naming the package is invisible to it. Recorded here as a second instance rather than re-filed.
Found with a control (VALIDATION_ERROR → 4 files under content/docs/api/), so the enumeration above is a real absence-and-presence measurement, not a broken query.
Source
PM review of PR #8004 (#7390) by the domain:cli seat (#6024), against origin/main.
Filed unassigned and without a
domain:*label — routing and grading are the triage seat's. Small, docs-only.What is incomplete
content/docs/api/data-api.mdxis the page that documents thefilterquery parameter and its rejection behaviour specifically::22— "filter| query | Filter expression (JSON).filtersalso accepted for backward compatibility. Malformed JSON is rejected with400 INVALID_FILTER— never ignored.":68— "400 INVALID_FILTERrather than dropped, because a dropped filter would …"PR #8004 (#7390) adds a second condition that answers
400 INVALID_FILTERon the same parameter: sending it more than once. Per the maintainer's 2026-08-11 ruling, a repeated?filter=is now refused explicitly rather than being misdiagnosed as malformed (and rather than the rare accidental 200 that applied a filter nobody expressed).Suggested shape: one clause on
:22naming repetition alongside malformed JSON, matching the shipped message (Repeated "filter" query parameter — send exactly one).Why it is filed rather than ridden along
PR #8004 was already reviewed, enqueued and awaiting checks when this was found. Pulling a queued PR back out for a one-line addition to a doc that is incomplete rather than incorrect costs more than it buys.
Note the PR did check docs before writing —
content/docs/protocol/kernel/http-protocol.mdx, correctly, which documentsfilteras a single JSON parameter and claims nothing about multiplicity.data-api.mdxis the page that turned out to matter.Related: the drift checker did not flag it
data-api.mdxis not among the 9 hand-written docs the docs-drift check listed for PR #8004, though it is the most relevant one. Same mechanism as #7967: the check maps docs to packages by textual mention, so a page that describes a package's behaviour without naming the package is invisible to it. Recorded here as a second instance rather than re-filed.Found with a control (
VALIDATION_ERROR→ 4 files undercontent/docs/api/), so the enumeration above is a real absence-and-presence measurement, not a broken query.Source
PM review of PR #8004 (#7390) by the
domain:cliseat (#6024), againstorigin/main.