Complete self-serve search rollout

This commit is contained in:
master
2026-03-08 08:50:38 +02:00
parent ac22ee3ce2
commit 80257a4538
13 changed files with 1219 additions and 58 deletions

View File

@@ -20,6 +20,22 @@
- concise, operator-facing wording
- no tenant secrets or volatile IDs in fallback copy
## Priority rollout ownership
| Context ID | Route family | Page ownership rule | Verification floor |
| --- | --- | --- | --- |
| `findings` | `/security/triage`, `/security/findings` | Security triage pages own the findings questions and clarifiers. | Mocked Playwright journey + shared search regressions |
| `policy` | `/ops/policy` | Policy workspace owns the questions and recovery prompts for rules, gates, and exceptions. | Mocked Playwright journey + shared search regressions |
| `doctor` | `/ops/operations/doctor`, `/ops/operations/system-health` | Doctor pages own the health-check questions and release-readiness follow-ups. | Mocked Playwright journey + live Doctor route pack |
| `timeline` | `/ops/timeline`, `/audit`, `/evidence/audit-log` | Timeline/Audit pages own time-window clarifiers and causal follow-ups. | Mocked Playwright journey |
| `releases` | `/releases`, `/mission-control` | Release-control pages own approval/blocker/next-step questions. | Mocked Playwright journey |
## Page team checklist
1. Add or update the route entry in `SEARCH_CONTEXT_DEFINITIONS`.
2. Define bounded `commonQuestions[]` and `clarifyingQuestions[]`.
3. Keep copy operator-facing; do not expose Stella internals or scoring jargon.
4. Verify the page still works with telemetry disabled or OTLP unset.
5. Add/update unit coverage for route-specific questions and a Playwright journey for the page family.
## Answer-first UX contract
- Every non-empty search must render one visible answer state before raw results:
- `grounded`
@@ -40,6 +56,22 @@
- `clarifyingQuestions[]` when no grounded answer exists
- "Related searches" remains driven by contextual chip logic so pages do not need to define a second parallel action system.
## Optional telemetry hooks
- Search may emit optional client-side telemetry markers for backlog triage:
- `search_self_serve_gap`
- `search_self_serve_reformulation`
- `search_self_serve_recovery`
- `search_self_serve_suggestion_suppressed`
- These markers are additive only. If telemetry is disabled or the sink is unavailable, search behavior, history, and assistant handoffs must remain unchanged.
- Marker payloads must avoid raw query text. Use route, answer state, counts, and reformulation depth instead.
## Gap review workflow
1. Review repeated `search_self_serve_gap` and `search_self_serve_reformulation` events by route family.
2. Compare them with visible no-result/clarify journeys from Playwright and operator feedback.
3. Update the page-owned question set or starter chips for the affected route.
4. Add or tighten a Playwright journey before marking the gap closed.
5. Record the adjustment in the active sprint `Execution Log` so the change is traceable.
## Source of truth
- Page registry and interfaces:
- `src/Web/StellaOps.Web/src/app/core/services/search-context.registry.ts`
@@ -55,6 +87,7 @@
- grounded answer
- clarify recovery
- answer-to-AdvisoryAI handoff
- priority-route rollout journeys (`findings`, `policy`, `doctor`, `timeline`, `releases`)
4. Keep route and API behavior mocked/deterministic; no live network dependencies.
## Relationship to chip contract