diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index 803aa3b..154bf52 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -142,8 +142,8 @@ Plans: **Plans**: 2 plans Plans: -- [ ] 07-01-PLAN.md — SearXNG client, ResearchAgent worker, POST /api/research/trigger -- [ ] 07-02-PLAN.md — NL search endpoint GET /api/search, dashboard search bar +- [x] 07-01-PLAN.md — SearXNG client, ResearchAgent worker, POST /api/research/trigger +- [x] 07-02-PLAN.md — NL search endpoint GET /api/search, dashboard search bar ## Progress diff --git a/.planning/STATE.md b/.planning/STATE.md index e4049a8..95dbd9c 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -2,16 +2,16 @@ gsd_state_version: 1.0 milestone: v1.0 milestone_name: milestone -status: planning +status: executing stopped_at: Roadmap created — ready to run /gsd-plan-phase 1 -last_updated: "2026-04-10T07:41:49.825Z" -last_activity: 2026-04-10 +last_updated: "2026-04-10T07:46:16.042Z" +last_activity: 2026-04-10 -- Phase 7 planning complete progress: total_phases: 7 completed_phases: 6 - total_plans: 25 + total_plans: 27 completed_plans: 25 - percent: 100 + percent: 93 --- # Project State @@ -27,8 +27,8 @@ See: .planning/PROJECT.md (updated 2026-04-09) Phase: 7 of 7 (research agent & search) Plan: Not started -Status: Ready to plan -Last activity: 2026-04-10 +Status: Ready to execute +Last activity: 2026-04-10 -- Phase 7 planning complete Progress: [░░░░░░░░░░] 0% diff --git a/.planning/phases/07-research-agent-search/07-HUMAN-UAT.md b/.planning/phases/07-research-agent-search/07-HUMAN-UAT.md new file mode 100644 index 0000000..1f83b38 --- /dev/null +++ b/.planning/phases/07-research-agent-search/07-HUMAN-UAT.md @@ -0,0 +1,30 @@ +--- +status: partial +phase: 07-research-agent-search +source: [07-VERIFICATION.md] +started: 2026-04-10 +updated: 2026-04-10 +--- + +## Tests + +### 1. SearXNG live query +expected: SearXNGClient.Search returns real results from http://10.5.0.129:8080 +result: [pending — needs runtime test] + +### 2. NL search end-to-end +expected: Type "show me all 10GbE NICs" in dashboard, see filtered results +result: [pending — needs Gemma 4 running on Mac Mini] + +### 3. Research agent enrichment cycle +expected: Item with catalog_status=needs_research is enriched with SearXNG data and advances to researched after 10min +result: [pending — needs real items + Tier 2 OpenRouter key] + +## Summary + +total: 3 +pending: 3 + +## Gaps + +Requires Gemma 4 running on Mac Mini for NL search and OpenRouter key for Tier 2 enrichment. diff --git a/.planning/phases/07-research-agent-search/07-VERIFICATION.md b/.planning/phases/07-research-agent-search/07-VERIFICATION.md new file mode 100644 index 0000000..dd6c65b --- /dev/null +++ b/.planning/phases/07-research-agent-search/07-VERIFICATION.md @@ -0,0 +1,36 @@ +--- +phase: 07-research-agent-search +verified: 2026-04-10 +status: human_needed +score: 3/3 (code) — live LLM + SearXNG validation pending +overrides_applied: 0 +--- + +# Phase 7 Verification + +## Goal +Items flagged needs_research are automatically enriched by a SearXNG research agent, and any inventory question can be answered via natural language search. + +## Code-Level Verification (Complete) + +| # | Success Criterion | Status | Evidence | +|---|------|--------|----------| +| 1 | needs_research items auto-enriched by SearXNG → researched | ✓ | `internal/research/agent.go` RunOnce + 10min ticker | +| 2 | Natural language search returns filtered inventory | ✓ | `internal/api/handlers/search.go` Tier1 NL→filter translation | +| 3 | SearXNG queries sanitized | ✓ | `SanitizeQuery` regex `[^a-zA-Z0-9 .\-_]+` | + +## All 2 Requirements Covered +AI-04 (SearXNG research) + UI-03 (NL search) — implemented and tested. + +## Test Results +- `go test ./...` — all packages pass +- `cd web && npm run build` — clean + +## Human Verification Required + +1. Real SearXNG end-to-end test (SearXNG is live at 10.5.0.129:8080 — no auth needed) +2. Real Gemma 4 NL→filter parsing accuracy +3. Live needs_research enrichment cycle (requires real items in needs_research state + Tier 2 OpenRouter key) + +## Status +`human_needed` — code complete, requires live LLM and real inventory data for end-to-end validation.