You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Observation-class finding, split out of #7390 while implementing it. Unassigned, filed per Prime Directive #10. Comment-only drift — no runtime behaviour is wrong.
The sentence
packages/metadata-protocol/src/protocol.ts, in the docblock above ARRAY_VALUED_QUERY_SLOTS (the #7321 arity survey), the where row reads:
where — a FILTER AST is an array (['status','=','open']), so a blanket arity refusal here would reject the AST body form outright. A repeated ?filter= is still refused, one block down, by isFilterAST failing to read it.
The first sentence is correct and load-bearing — it is exactly why #7386's arity gate skips this slot, and #7390 quotes the same reasoning.
The last sentence has two problems, one of them older than #7390:
It also does not mention the second shape at all: ?filter=status&filter=%3D&filter=open spelled a valid AST and succeeded with a filter nobody expressed, which is the sharper half of #7390.
Why it matters more than a typo
This docblock is the survey a future author reads to decide whether a slot needs arity treatment. A reader who takes "still refused, one block down" at face value concludes the filter slot is covered and stops — which is roughly how the gap survived from #7321 to #7390. The sentence should say that arity for this slot is judged at the querystring ingress and name #7390, so the next reader is told which layer owns it.
Deliberately not fixed in #7390's PR: that card's ruling put the enforcement in packages/rest and explicitly kept it out of packages/metadata-protocol, and protocol.ts is a hot shared file. Same handling as #7707 / #7874, which corrected stale comments in their own PRs.
Dedup
Searched open issues for ARRAY_VALUED_QUERY_SLOTS, isFilterAST, malformedFilterArrayError, stale comment, and arity survey. Hits: #7390 (the parent), #7321 / #7386 (the arity gate, both closed) — none covers this comment.
Observation-class finding, split out of #7390 while implementing it. Unassigned, filed per Prime Directive #10. Comment-only drift — no runtime behaviour is wrong.
The sentence
packages/metadata-protocol/src/protocol.ts, in the docblock aboveARRAY_VALUED_QUERY_SLOTS(the #7321 arity survey), thewhererow reads:The first sentence is correct and load-bearing — it is exactly why #7386's arity gate skips this slot, and #7390 quotes the same reasoning.
The last sentence has two problems, one of them older than #7390:
isFilterASTfailing producesmalformedFilterArrayError— a 400 telling a caller whose filters were each well-formed that their filter is malformed, listing the AST operator vocabulary. That is finding: a repeated?filter=onGET /data/:objectcannot be told from a filter AST, so it is diagnosed as a malformed filter (and, rarely, succeeds) #7390's entire finding: the refusal is correct, the diagnosis is not. "Still refused" reads as handled.?filter=onGET /data/:objectcannot be told from a filter AST, so it is diagnosed as a malformed filter (and, rarely, succeeds) #7390 moves the arity judgement for this slot to the REST querystring ingress (packages/rest,assertFilterParamSuppliedOnce), which is the only layer that can make it — on a querystring an array is a repetition and can be nothing else. A repeated?filter=onGET /data/:objectno longer reaches this block at all.It also does not mention the second shape at all:
?filter=status&filter=%3D&filter=openspelled a valid AST and succeeded with a filter nobody expressed, which is the sharper half of #7390.Why it matters more than a typo
This docblock is the survey a future author reads to decide whether a slot needs arity treatment. A reader who takes "still refused, one block down" at face value concludes the filter slot is covered and stops — which is roughly how the gap survived from #7321 to #7390. The sentence should say that arity for this slot is judged at the querystring ingress and name #7390, so the next reader is told which layer owns it.
Deliberately not fixed in #7390's PR: that card's ruling put the enforcement in
packages/restand explicitly kept it out ofpackages/metadata-protocol, andprotocol.tsis a hot shared file. Same handling as #7707 / #7874, which corrected stale comments in their own PRs.Dedup
Searched open issues for
ARRAY_VALUED_QUERY_SLOTS,isFilterAST,malformedFilterArrayError, stale comment, and arity survey. Hits: #7390 (the parent), #7321 / #7386 (the arity gate, both closed) — none covers this comment.Generated by Claude Code