Plan search operator correction phases

This commit is contained in:
master
2026-03-07 20:35:32 +02:00
parent a3f532359b
commit 8ee5dcf420
5 changed files with 343 additions and 2 deletions

View File

@@ -12,15 +12,24 @@
- Current-scope behavior is correct as a ranking concept, but the UI still talks about the mechanism instead of simply showing the best in-scope answer first and only then out-of-scope overflow.
- Suggestion reliability is fixed only when the active corpus is actually ingested. A healthy process with an empty corpus is still a bad operator experience unless the UI suppresses or fails those paths explicitly.
## What still fails after live operator use
- The product still leaves visible or hidden traces of a dual entry model. Search is supposed to be the starting point, but AdvisoryAI still feels like a separate feature instead of a secondary deep-dive opened from the search field.
- The current surface still carries internal search concepts in contracts and helpers even after the visible buttons were reduced. If `Find / Explain / Act` still changes prompt or chip behavior, the product is still teaching an internal model.
- The current history contract cannot reliably remove old failed searches after reload because the local store still accepts legacy bare-string entries with no result outcome attached.
- `Did you mean` is still visually tied to the results surface rather than the input correction moment. It needs to live immediately below the search field.
- Suggestions are still too easy to surface without enough corpus proof. Search must treat corpus readiness and suggestion executability as a product requirement, not a test-only concern.
## Product rules
1. Search is the primary entry point.
2. AdvisoryAI is a secondary deep-dive opened from search, not a competing starting point or route jump.
3. Search should infer relevance and intent; the user should not need to choose a mode.
3. Search should infer relevance and intent; the user should not need to choose a mode or understand Stella search mechanics.
4. Search should bias to the current page context automatically; the user should not need to toggle scope.
5. Search should never advertise a suggestion that cannot execute against the active corpus.
6. Search history should contain only successful searches.
7. Telemetry remains optional. Search behavior must not depend on analytics emission.
8. Search UI must avoid teaching Stella terminology or search mechanics before the operator has even started.
9. `Did you mean` belongs directly below the search field because it is an input correction, not a downstream refinement.
10. Search should summarize close evidence automatically. AdvisoryAI expands detail; it should not be required to make the primary result understandable.
## Target interaction model
### Entry
@@ -101,4 +110,23 @@
- Implemented before and during the corrective phases: explicit scope/mode/recovery controls were removed from the main search flow, implicit current-scope weighting and overflow contracts were added, and suggestion viability preflight now suppresses dead chips before render.
- Implemented before the corrective phases: the live Doctor suggestion suite now rebuilds the active corpus, fails on empty knowledge projections, iterates every surfaced suggestion, and verifies Ask-AdvisoryAI inherits the live search context.
- Implemented from the corrective phases: backend overflow is now narrow enough that clear in-scope winners suppress out-of-scope spillover, blended summaries only appear for genuinely close evidence clusters, and `SearchTelemetryEnabled` cleanly disables analytics/feedback/sink emission without affecting retrieval or history.
- Still pending from the corrective phases: broader live-page matrices and explicit client-side telemetry opt-out.
- Still pending from the corrective phases: removal of hidden FE mode dependencies, a structured success-only history contract that purges failed legacy entries on load, stricter suggestion/corpus readiness gating across more routes, and broader live-page matrices.
## Execution phases - operator correction pass
### Phase 1 - Search-first primary surface cleanup
- Remove the remaining FE mode concept from shared search contracts, prompt helpers, and page-owned chip selection.
- Keep one visible primary entry: search input with a compact assistant launcher beside it.
- Attach `Did you mean` directly to the input area and simplify result labels to plain operator language.
- Migrate recent history to a structured success-only format and ignore legacy failed entries on load.
### Phase 2 - Backend query understanding and suggestion hardening
- Infer answer shape from the query, route context, visible entities, and recent actions instead of any FE mode hint.
- Return stricter suggestion viability signals so FE can suppress dead suggestions when the corpus is empty, stale, or outside the current route's supported domains.
- Keep out-of-scope overflow secondary and only when it materially improves the answer.
- Keep telemetry optional and separate from retrieval, ranking, suggestion gating, and history.
### Phase 3 - Live ingestion-backed readiness and regression gate
- Run deterministic Playwright against the simplified surface on every change.
- Run live Playwright against ingested corpora and fail early on empty corpus, missing rebuilds, or uncompiled CLI assumptions.
- Assert that every surfaced suggestion on covered routes resolves to a non-dead-end state.
- Treat corpus readiness as part of release verification for search suggestions.