Expand description
GAP-SG-201: what the QUERY already discarded, declared so the output surface can stop describing a set it never saw.
--filter type=skill list answers 39 over 1892 memories. The same request
with --limit 50 answered 0, with exit 0, because the predicate was
handed the fifty rows SQL returned rather than the corpus the caller asked
about. Both numbers are produced by the same code; only one of them is an
answer to the question.
The surface cannot see this on its own. It receives a serialized envelope,
downstream of LIMIT, and an array of fifty is indistinguishable from a
corpus of fifty. So the command that applied the ceiling declares it here,
and the surface reads the declaration.
§Why a process-wide cell rather than a field on every response
This binary is one-shot: one process runs one subcommand and emits one
envelope. A cell is therefore not ambient state that could belong to someone
else — it is the single fact about the single query this process ran. The
same reasoning already governs super::AgentSurface. Threading a new field
through six response structs would also change six published schemas to carry
a fact none of them is about.
§Pagination is not top-k
CeilingKind is the distinction the refusal turns on, and it is not
cosmetic. list --limit 50 pages a countable universe: 50 of 1892 is a
recorte, and a predicate over it answers the wrong question. hybrid-search -k 5 does not page anything — the five best matches ARE the result set the
caller asked for, and filtering them is a legitimate operation on a complete
answer. Refusing there would break every semantic search that carries a
filter while curing nothing.
Structs§
- Query
Ceiling - The ceiling one query applied, as the command that applied it saw it.
Enums§
- Ceiling
Kind - What kind of ceiling the query applied.
- Ceiling
Source - Where the ceiling’s value came from.
- Filter
Scope - What the caller declares
--filtermay observe.