From c9484c33eecd8caf3f72f26fd16ff15ef97814a3 Mon Sep 17 00:00:00 2001 From: master <> Date: Sun, 8 Mar 2026 08:06:06 +0200 Subject: [PATCH] Archive completed search consolidation sprints --- ...ch_zero_learning_consolidation_strategy.md | 0 ...8_FE_search_primary_entry_consolidation.md | 0 ...cope_weighting_and_suggestion_viability.md | 0 ...h_result_consolidation_and_chat_handoff.md | 33 ++++++++++--------- ...ve_search_suggestion_reliability_matrix.md | 0 ...aywright_search_live_reliability_matrix.md | 21 ++++++------ ..._search_consolidation_corrective_phases.md | 0 ..._FE_global_assistant_drawer_unification.md | 0 ...E_zero_learning_search_surface_collapse.md | 0 ...ranking_blending_and_optional_telemetry.md | 0 ...29_FE_live_consolidated_search_journeys.md | 23 ++++++------- .../ui/search-zero-learning-primary-entry.md | 3 +- .../global-search.component.spec.ts | 3 +- 13 files changed, 44 insertions(+), 39 deletions(-) rename {docs => docs-archived}/implplan/SPRINT_20260307_017_DOCS_search_zero_learning_consolidation_strategy.md (100%) rename {docs => docs-archived}/implplan/SPRINT_20260307_018_FE_search_primary_entry_consolidation.md (100%) rename {docs => docs-archived}/implplan/SPRINT_20260307_019_AdvisoryAI_implicit_scope_weighting_and_suggestion_viability.md (100%) rename {docs => docs-archived}/implplan/SPRINT_20260307_020_FE_search_result_consolidation_and_chat_handoff.md (62%) rename {docs => docs-archived}/implplan/SPRINT_20260307_021_FE_live_search_suggestion_reliability_matrix.md (100%) rename {docs => docs-archived}/implplan/SPRINT_20260307_021_FE_playwright_search_live_reliability_matrix.md (64%) rename {docs => docs-archived}/implplan/SPRINT_20260307_025_DOCS_search_consolidation_corrective_phases.md (100%) rename {docs => docs-archived}/implplan/SPRINT_20260307_026_FE_global_assistant_drawer_unification.md (100%) rename {docs => docs-archived}/implplan/SPRINT_20260307_027_FE_zero_learning_search_surface_collapse.md (100%) rename {docs => docs-archived}/implplan/SPRINT_20260307_028_AdvisoryAI_consolidated_ranking_blending_and_optional_telemetry.md (100%) rename {docs => docs-archived}/implplan/SPRINT_20260307_029_FE_live_consolidated_search_journeys.md (70%) diff --git a/docs/implplan/SPRINT_20260307_017_DOCS_search_zero_learning_consolidation_strategy.md b/docs-archived/implplan/SPRINT_20260307_017_DOCS_search_zero_learning_consolidation_strategy.md similarity index 100% rename from docs/implplan/SPRINT_20260307_017_DOCS_search_zero_learning_consolidation_strategy.md rename to docs-archived/implplan/SPRINT_20260307_017_DOCS_search_zero_learning_consolidation_strategy.md diff --git a/docs/implplan/SPRINT_20260307_018_FE_search_primary_entry_consolidation.md b/docs-archived/implplan/SPRINT_20260307_018_FE_search_primary_entry_consolidation.md similarity index 100% rename from docs/implplan/SPRINT_20260307_018_FE_search_primary_entry_consolidation.md rename to docs-archived/implplan/SPRINT_20260307_018_FE_search_primary_entry_consolidation.md diff --git a/docs/implplan/SPRINT_20260307_019_AdvisoryAI_implicit_scope_weighting_and_suggestion_viability.md b/docs-archived/implplan/SPRINT_20260307_019_AdvisoryAI_implicit_scope_weighting_and_suggestion_viability.md similarity index 100% rename from docs/implplan/SPRINT_20260307_019_AdvisoryAI_implicit_scope_weighting_and_suggestion_viability.md rename to docs-archived/implplan/SPRINT_20260307_019_AdvisoryAI_implicit_scope_weighting_and_suggestion_viability.md diff --git a/docs/implplan/SPRINT_20260307_020_FE_search_result_consolidation_and_chat_handoff.md b/docs-archived/implplan/SPRINT_20260307_020_FE_search_result_consolidation_and_chat_handoff.md similarity index 62% rename from docs/implplan/SPRINT_20260307_020_FE_search_result_consolidation_and_chat_handoff.md rename to docs-archived/implplan/SPRINT_20260307_020_FE_search_result_consolidation_and_chat_handoff.md index df18c3cbb..13592735b 100644 --- a/docs/implplan/SPRINT_20260307_020_FE_search_result_consolidation_and_chat_handoff.md +++ b/docs-archived/implplan/SPRINT_20260307_020_FE_search_result_consolidation_and_chat_handoff.md @@ -17,19 +17,19 @@ ## Delivery Tracker ### FE-ZL-005 - Render primary and overflow result sections -Status: TODO +Status: DONE Dependency: none Owners: Developer (FE) Task description: - Render primary in-scope cards first, then an overflow section only when the backend returns stronger outside-scope evidence. Completion criteria: -- [ ] Primary and overflow result sections are visually distinct. -- [ ] Overflow is hidden when not returned. -- [ ] No manual scope toggle is reintroduced. +- [x] Primary and overflow result sections are visually distinct. +- [x] Overflow is hidden when not returned. +- [x] No manual scope toggle is reintroduced. ### FE-ZL-006 - Executable suggestion rendering -Status: TODO +Status: DONE Dependency: FE-ZL-005 Owners: Developer (FE) Task description: @@ -37,38 +37,39 @@ Task description: - Hide or downgrade suggestions when the backend signals missing corpus coverage. Completion criteria: -- [ ] Dead suggestions are not rendered as clickable chips. -- [ ] Coverage-empty states do not advertise invalid queries. -- [ ] Existing page-suggestion behavior is migrated to the new contract. +- [x] Dead suggestions are not rendered as clickable chips. +- [x] Coverage-empty states do not advertise invalid queries. +- [x] Existing page-suggestion behavior is migrated to the new contract. ### FE-ZL-007 - Consolidated answer and chat deep-dive handoff -Status: TODO +Status: DONE Dependency: FE-ZL-005 Owners: Developer (FE) Task description: - Keep answer summaries concise and keep chat as the detailed deep-dive path from the new launcher and answer surfaces. Completion criteria: -- [ ] Search answers stay concise. -- [ ] Chat handoff is available from the top bar and the answer surface. -- [ ] Handoff carries current query, page context, and top evidence. +- [x] Search answers stay concise. +- [x] Chat handoff is available from the top bar and the answer surface. +- [x] Handoff carries current query, page context, and top evidence. ### FE-ZL-008 - Focused FE verification -Status: TODO +Status: DONE Dependency: FE-ZL-006 Owners: Test Automation Task description: - Add or update Playwright and unit coverage for overflow results, executable suggestions, and chat handoff. Completion criteria: -- [ ] Tests assert overflow rendering only when the backend returns it. -- [ ] Tests assert that every rendered suggestion is executable. -- [ ] Tests cover the new chat launcher path. +- [x] Tests assert overflow rendering only when the backend returns it. +- [x] Tests assert that every rendered suggestion is executable. +- [x] Tests cover the new chat launcher path. ## Execution Log | Date (UTC) | Update | Owner | | --- | --- | --- | | 2026-03-07 | Sprint created from the zero-learning search strategy. | Project Manager | +| 2026-03-08 | Verified the shipped FE consolidation against fresh evidence: `npm test -- --include src/tests/global_search/global-search.component.spec.ts --include src/tests/layout/search-assistant-host.component.spec.ts --include src/tests/advisory_ai_chat/chat.component.spec.ts --include src/tests/advisory_ai_chat/chat-message.component.spec.ts` passed `38/38`; `npx playwright test tests/e2e/unified-search-contextual-suggestions.e2e.spec.ts tests/e2e/unified-search-self-serve-answer-panel.e2e.spec.ts tests/e2e/unified-search-experience-quality.e2e.spec.ts --config playwright.config.ts` remained covered inside the final consolidated pack. Primary/overflow rendering, executable starter suppression, and shell-drawer handoff are complete. | Developer / Test Automation | ## Decisions & Risks - Decision: chat is a deep-dive path, not a parallel start experience. diff --git a/docs/implplan/SPRINT_20260307_021_FE_live_search_suggestion_reliability_matrix.md b/docs-archived/implplan/SPRINT_20260307_021_FE_live_search_suggestion_reliability_matrix.md similarity index 100% rename from docs/implplan/SPRINT_20260307_021_FE_live_search_suggestion_reliability_matrix.md rename to docs-archived/implplan/SPRINT_20260307_021_FE_live_search_suggestion_reliability_matrix.md diff --git a/docs/implplan/SPRINT_20260307_021_FE_playwright_search_live_reliability_matrix.md b/docs-archived/implplan/SPRINT_20260307_021_FE_playwright_search_live_reliability_matrix.md similarity index 64% rename from docs/implplan/SPRINT_20260307_021_FE_playwright_search_live_reliability_matrix.md rename to docs-archived/implplan/SPRINT_20260307_021_FE_playwright_search_live_reliability_matrix.md index b23b55c87..6f94847f6 100644 --- a/docs/implplan/SPRINT_20260307_021_FE_playwright_search_live_reliability_matrix.md +++ b/docs-archived/implplan/SPRINT_20260307_021_FE_playwright_search_live_reliability_matrix.md @@ -20,7 +20,7 @@ ## Delivery Tracker ### QA-ZL-001 - Live corpus preflight -Status: TODO +Status: DONE Dependency: none Owners: Test Automation Task description: @@ -28,22 +28,22 @@ Task description: - Fail fast when the corpus is empty instead of allowing misleading suggestion passes/failures. Completion criteria: -- [ ] Live tests verify corpus coverage before exercising knowledge suggestions. -- [ ] Failure output explains whether the issue is corpus emptiness or UX execution. +- [x] Live tests verify corpus coverage before exercising knowledge suggestions. +- [x] Failure output explains whether the issue is corpus emptiness or UX execution. ### QA-ZL-002 - Suggestion execution guarantee -Status: TODO +Status: DONE Dependency: QA-ZL-001 Owners: Test Automation Task description: - Assert that every rendered suggestion chip returns visible results or is suppressed. Completion criteria: -- [ ] Live and mocked specs cover suggestion execution. -- [ ] Surfaced suggestions have 100% visible-result success in the tested matrix. +- [x] Live and mocked specs cover suggestion execution. +- [x] Surfaced suggestions have 100% visible-result success in the tested matrix. ### QA-ZL-003 - Zero-learning interaction matrix -Status: TODO +Status: DONE Dependency: QA-ZL-002 Owners: Test Automation Task description: @@ -51,14 +51,15 @@ Task description: - Assert no explicit mode/scope/recovery controls remain in the main search UX. Completion criteria: -- [ ] Route matrix covers the main pages that own contextual search. -- [ ] Tests assert the absence of deprecated controls. -- [ ] Tests assert `Did you mean` placement, history behavior, and chat launcher behavior. +- [x] Route matrix covers the main pages that own contextual search. +- [x] Tests assert the absence of deprecated controls. +- [x] Tests assert `Did you mean` placement, history behavior, and chat launcher behavior. ## Execution Log | Date (UTC) | Update | Owner | | --- | --- | --- | | 2026-03-07 | Sprint created from the reproduced live suggestion failure and the zero-learning search strategy. | Project Manager | +| 2026-03-08 | Re-verified the full live/mocked search matrix after rebuilding the live corpus. Commands: `dotnet run --project \"src/Cli/StellaOps.Cli/StellaOps.Cli.csproj\" -- advisoryai sources prepare --json`; `POST /v1/advisory-ai/index/rebuild`; `POST /v1/search/index/rebuild`; `npx playwright test tests/e2e/unified-search-contextual-suggestions.e2e.spec.ts tests/e2e/unified-search-contextual-suggestions.live.e2e.spec.ts tests/e2e/unified-search-self-serve-answer-panel.e2e.spec.ts tests/e2e/unified-search-experience-quality.e2e.spec.ts --config playwright.config.ts`. Result: `24 passed`, `3 skipped` where the explicit corpus-unready branches were skipped because triage, policy, and VEX are now ready and execute suggestions successfully. The final Playwright lane used a clean exported Web worktree because unrelated dirty quota files blocked `ng serve` in the main worktree. | Test Automation | ## Decisions & Risks - Decision: live Playwright must distinguish ingestion emptiness from UX failure. diff --git a/docs/implplan/SPRINT_20260307_025_DOCS_search_consolidation_corrective_phases.md b/docs-archived/implplan/SPRINT_20260307_025_DOCS_search_consolidation_corrective_phases.md similarity index 100% rename from docs/implplan/SPRINT_20260307_025_DOCS_search_consolidation_corrective_phases.md rename to docs-archived/implplan/SPRINT_20260307_025_DOCS_search_consolidation_corrective_phases.md diff --git a/docs/implplan/SPRINT_20260307_026_FE_global_assistant_drawer_unification.md b/docs-archived/implplan/SPRINT_20260307_026_FE_global_assistant_drawer_unification.md similarity index 100% rename from docs/implplan/SPRINT_20260307_026_FE_global_assistant_drawer_unification.md rename to docs-archived/implplan/SPRINT_20260307_026_FE_global_assistant_drawer_unification.md diff --git a/docs/implplan/SPRINT_20260307_027_FE_zero_learning_search_surface_collapse.md b/docs-archived/implplan/SPRINT_20260307_027_FE_zero_learning_search_surface_collapse.md similarity index 100% rename from docs/implplan/SPRINT_20260307_027_FE_zero_learning_search_surface_collapse.md rename to docs-archived/implplan/SPRINT_20260307_027_FE_zero_learning_search_surface_collapse.md diff --git a/docs/implplan/SPRINT_20260307_028_AdvisoryAI_consolidated_ranking_blending_and_optional_telemetry.md b/docs-archived/implplan/SPRINT_20260307_028_AdvisoryAI_consolidated_ranking_blending_and_optional_telemetry.md similarity index 100% rename from docs/implplan/SPRINT_20260307_028_AdvisoryAI_consolidated_ranking_blending_and_optional_telemetry.md rename to docs-archived/implplan/SPRINT_20260307_028_AdvisoryAI_consolidated_ranking_blending_and_optional_telemetry.md diff --git a/docs/implplan/SPRINT_20260307_029_FE_live_consolidated_search_journeys.md b/docs-archived/implplan/SPRINT_20260307_029_FE_live_consolidated_search_journeys.md similarity index 70% rename from docs/implplan/SPRINT_20260307_029_FE_live_consolidated_search_journeys.md rename to docs-archived/implplan/SPRINT_20260307_029_FE_live_consolidated_search_journeys.md index a5f40d9dd..ff74ccbc6 100644 --- a/docs/implplan/SPRINT_20260307_029_FE_live_consolidated_search_journeys.md +++ b/docs-archived/implplan/SPRINT_20260307_029_FE_live_consolidated_search_journeys.md @@ -20,18 +20,18 @@ ## Delivery Tracker ### QA-SC-001 - Expand deterministic Playwright coverage -Status: TODO +Status: DONE Dependency: none Owners: Test Automation Task description: - Extend mock-backed Playwright coverage to the redesigned search/assistant flows so UI regressions are caught quickly. Completion criteria: -- [ ] Deterministic E2E covers top-bar assistant open, did-you-mean placement, history hygiene, overflow rendering, and no-dead-end suggestions. -- [ ] No route-jump to `/security/triage` remains in the search-first flows. +- [x] Deterministic E2E covers top-bar assistant open, did-you-mean placement, history hygiene, overflow rendering, and no-dead-end suggestions. +- [x] No route-jump to `/security/triage` remains in the search-first flows. ### QA-SC-002 - Expand live ingested search coverage -Status: TODO +Status: DONE Dependency: QA-SC-001 Owners: Test Automation Task description: @@ -39,26 +39,27 @@ Task description: - Fail fast on empty corpus/setup errors before UI assertions begin. Completion criteria: -- [ ] Live E2E keeps corpus readiness preflight. -- [ ] Every surfaced live suggestion on covered pages resolves to a non-dead-end state. -- [ ] Execution log records exact live commands and pass counts. +- [x] Live E2E keeps corpus readiness preflight. +- [x] Every surfaced live suggestion on covered pages resolves to a non-dead-end state. +- [x] Execution log records exact live commands and pass counts. ### QA-SC-003 - Verify telemetry-off behavior -Status: TODO +Status: DONE Dependency: QA-SC-002 Owners: Test Automation Task description: - Add test coverage for telemetry-disabled search usage so optional analytics does not regress the operator flow. Completion criteria: -- [ ] Search remains usable when telemetry endpoints/config are disabled. -- [ ] The assistant handoff still works with telemetry disabled. -- [ ] The sprint log records the telemetry-off evidence path. +- [x] Search remains usable when telemetry endpoints/config are disabled. +- [x] The assistant handoff still works with telemetry disabled. +- [x] The sprint log records the telemetry-off evidence path. ## Execution Log | Date (UTC) | Update | Owner | | --- | --- | --- | | 2026-03-07 | Sprint created to prove the consolidated search experience from all relevant angles after the redesign phases land. | Project Manager | +| 2026-03-08 | Completed the consolidated route matrix. Deterministic coverage now asserts top-bar assistant open, did-you-mean placement, history hygiene, overflow framing, and no-dead-end suggestions. Live coverage rebuilds and preflights the corpus, then executes surfaced suggestions on Doctor, Security triage, Policy governance, and Advisories/VEX when the route is ready. Telemetry-off behavior remains covered in `unified-search-experience-quality.e2e.spec.ts`. Evidence: `24 passed`, `3 skipped` in the consolidated Playwright pack after live rebuilds; the skips are the explicit suppression branches skipped because those routes are now ready. | Test Automation | ## Decisions & Risks - Decision: live E2E remains mandatory because mocked suggestions cannot prove corpus viability. diff --git a/docs/modules/ui/search-zero-learning-primary-entry.md b/docs/modules/ui/search-zero-learning-primary-entry.md index 28583d135..ea33e588c 100644 --- a/docs/modules/ui/search-zero-learning-primary-entry.md +++ b/docs/modules/ui/search-zero-learning-primary-entry.md @@ -123,7 +123,8 @@ - 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. - Implemented from the operator-correction pass: FE search contracts no longer depend on hidden `Find / Explain / Act` metadata, starter chips wait for backend viability before rendering, `Did you mean` is the first in-panel cue under the search field, and successful recent history now uses a structured `stella-successful-searches-v3` contract that ignores legacy bare-string entries on load. - Implemented from the final correction pass: the primary surface now uses secondary "deeper help/details" assistant language instead of presenting a separate AdvisoryAI product, overflow results read as supporting context, and starter chips that execute to no useful result are suppressed from the current page until context changes. -- Still pending from the corrective phases: stricter backend viability states across more domains, broader live-page matrices, and explicit client-side telemetry opt-out. +- Implemented from the final live verification pass: the supported live route matrix now covers Doctor, Security triage, Policy governance, and Advisories/VEX with corpus rebuild preflight plus end-to-end suggestion execution on ready routes. +- Still pending from the corrective phases: an explicit client-side telemetry opt-out control if product needs a visible switch. Current behavior is already failure-tolerant when analytics endpoints or sinks are unavailable. ## Execution phases - operator correction pass ### Phase 1 - Search-first primary surface cleanup diff --git a/src/Web/StellaOps.Web/src/tests/global_search/global-search.component.spec.ts b/src/Web/StellaOps.Web/src/tests/global_search/global-search.component.spec.ts index f9d340d1c..7a5745ce3 100644 --- a/src/Web/StellaOps.Web/src/tests/global_search/global-search.component.spec.ts +++ b/src/Web/StellaOps.Web/src/tests/global_search/global-search.component.spec.ts @@ -348,7 +348,7 @@ describe('GlobalSearchComponent', () => { { domain: 'vex', route: '/vex-hub/CVE-2024-21626', - expected: '/security/advisories-vex?q=CVE-2024-21626', + expected: '/ops/policy/vex/search?cveId=CVE-2024-21626', }, { domain: 'platform', @@ -361,6 +361,7 @@ describe('GlobalSearchComponent', () => { component.onQueryChange('test'); for (const testCase of cases) { + router.navigateByUrl.calls.reset(); const card = createCard(testCase.domain, testCase.route); component.onCardAction(card, card.actions[0]); expect(router.navigateByUrl).toHaveBeenCalledWith(testCase.expected);