Repository navigation
fix(search): refuse unknown fields and boosts, one name per concept, faster coverage - #2871
Merged
Merged
Conversation
…faster coverage The search gaps the 2026-11-11 audit found (NEED-2560 A, TASK-986): - BUG-740: an unknown field (`status:open`) or a notes field in message search (`author:`, `site:`) is refused with what to write instead, not searched as words that find nothing. - BUG-741: a boost (`invoice^2`) is refused with the query to retry. - UX-221: `sender:` is `from:`; `title:` is the chat title in messages and the subject in mail; one mapping table in the query guide. - UX-222: name not_found, the three-character minimums and title patterns say what to write and carry reason codes (query.no-match, query.short-text). - UX-223: task titles by word and bare word, contacts email:/phone:, deals by title: in search all. - UX-224: field:* and _exists_:field mean presence in message and mail search. - PERF-99: word-end patterns are checked up to the page; the refusal names the term and suggests *part*. - PERF-100: coverage reads chats.message_count and each chat's newest message off its time index (478 ms -> 31 ms for a search at 1M messages). - DEBT-326/327: query.legacy-date-field registered (renamed from legacy_date_field); verify-query-reference normalizes Java object ids. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Task
Fix the search gaps of the 2026-11-11 audit that the owner approved (NEED-2560 answer A, TASK-986), in one PR. The
shape of search results and pagination is unchanged.
Why
Agents and people wrote queries that found nothing and said nothing (
status:open,invoice^2,author:in messages),used two names for one concept, or hit a refusal that named no alternative. Every message search also spent about
0.45 s at 1M messages counting every chat's messages for its coverage.
What
status:openquery.unknown-field:tasks list status:open, or quote itauthor:x,site:xquery.unsupported-field: "a notes field — search notes reads it"invoice^2query.unsupported-operator: drop it (invoice) or quote itsender:olga,title:Альфаsender:isfrom:;title:is the chat title (messages) and the subject (mail); one mapping table in the guide_exists_:from,subject:*has:file,has:link…tasks list request,title:requestquery.bare-word/ title prefix onlycontacts list phone:+34,email:example.com+34misparsed; no email/phonesearch all title:Поставкаchat:Альфа*fitting nothing; 2-letter chat searchquery.no-matchwithchat:*Альфа*;query.short-textwith a hint*ениat 1M*part*договор*at 1Mafter:legacy_date_field(not registrable)query.legacy-date-field, registered; the reasons test now also readssearchError(...)bin/verify-query-referenceon JDK 25Not done, and why:
search all: memo's MCP gates eachsearch alllane by permission and has no tasks gate, so a taskslane would show task titles where
tasks.listis denied. It needs memo's gate in the same bump.title:inmeetings search: needs a new hit scope or a folded description column(a migration). Meeting titles already match in
search all.Breaking items are under "Changed — may break callers" in the changelog fragment.
Measurement: cli-testing, performance/search/coverage-step
(WireCatLabs/cli-testing#356).
Testing
🤖 Generated with Claude Code