Files
llm-multiverse/implementation-plans/_index.md
Pi Agent cd75318f45 test: add integration tests for Search Service (issue #50)
8 integration tests wiring real service components with mocked external
services (SearXNG via aioresponses, Model Gateway/Audit via mock gRPC
servers). Tests cover: full pipeline with all fields populated, clean
text extraction, summarization, unreachable URL handling, audit logging,
SearXNG unavailability, result ordering, and Model Gateway fallback.

Total: 71 tests passing across the Search Service.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 15:51:13 +01:00

119 lines
8.9 KiB
Markdown

# Implementation Plans Index
## Master Table
| Issue | Title | Milestone | Status | Language | Plan |
|---|---|---|---|---|---|
| #7 | Set up proto project structure and build tooling | Phase 1 | `COMPLETED` | Protobuf | [issue-007.md](issue-007.md) |
| #8 | Define common.proto (shared types) | Phase 1 | `COMPLETED` | Protobuf | [issue-008.md](issue-008.md) |
| #9 | Define audit.proto | Phase 1 | `COMPLETED` | Protobuf | [issue-009.md](issue-009.md) |
| #10 | Define secrets.proto | Phase 1 | `COMPLETED` | Protobuf | [issue-010.md](issue-010.md) |
| #11 | Define memory.proto | Phase 1 | `COMPLETED` | Protobuf | [issue-011.md](issue-011.md) |
| #12 | Define model_gateway.proto | Phase 1 | `COMPLETED` | Protobuf | [issue-012.md](issue-012.md) |
| #13 | Define search.proto | Phase 1 | `COMPLETED` | Protobuf | [issue-013.md](issue-013.md) |
| #14 | Define tool_broker.proto | Phase 1 | `COMPLETED` | Protobuf | [issue-014.md](issue-014.md) |
| #15 | Define orchestrator.proto | Phase 1 | `COMPLETED` | Protobuf | [issue-015.md](issue-015.md) |
| #16 | Generate Rust stubs (prost/tonic) | Phase 1 | `COMPLETED` | Rust | [issue-016.md](issue-016.md) |
| #17 | Generate Python stubs (grpcio-tools) | Phase 1 | `COMPLETED` | Python | [issue-017.md](issue-017.md) |
| #18 | Scaffold Audit Service Rust project | Phase 2 | `COMPLETED` | Rust | [issue-018.md](issue-018.md) |
| #19 | Implement append-only file log backend | Phase 2 | `COMPLETED` | Rust | [issue-019.md](issue-019.md) |
| #20 | Implement Append gRPC endpoint | Phase 2 | `COMPLETED` | Rust | [issue-020.md](issue-020.md) |
| #21 | Integration tests for Audit Service | Phase 2 | `COMPLETED` | Rust | [issue-021.md](issue-021.md) |
| #22 | Scaffold Secrets Service Rust project | Phase 3 | `COMPLETED` | Rust | [issue-022.md](issue-022.md) |
| #23 | Implement libsecret / D-Bus backend | Phase 3 | `COMPLETED` | Rust | [issue-023.md](issue-023.md) |
| #24 | Implement kernel keyring fallback | Phase 3 | `COMPLETED` | Rust | [issue-024.md](issue-024.md) |
| #25 | Implement GetSecret gRPC endpoint | Phase 3 | `COMPLETED` | Rust | [issue-025.md](issue-025.md) |
| #26 | Integration tests for Secrets Service | Phase 3 | `COMPLETED` | Rust | [issue-026.md](issue-026.md) |
| #27 | Scaffold Memory Service Rust project | Phase 4 | `COMPLETED` | Rust | [issue-027.md](issue-027.md) |
| #28 | Set up DuckDB schema and VSS extension | Phase 4 | `COMPLETED` | Rust | [issue-028.md](issue-028.md) |
| #29 | Implement embedding generation integration | Phase 4 | `COMPLETED` | Rust | [issue-029.md](issue-029.md) |
| #30 | Implement staged retrieval (coarse-to-fine, 4 stages) | Phase 4 | `COMPLETED` | Rust | [issue-030.md](issue-030.md) |
| #31 | Implement extraction step | Phase 4 | `COMPLETED` | Rust | [issue-031.md](issue-031.md) |
| #32 | Implement semantic cache | Phase 4 | `COMPLETED` | Rust | [issue-032.md](issue-032.md) |
| #33 | Implement provenance tagging and poisoning protection | Phase 4 | `COMPLETED` | Rust | [issue-033.md](issue-033.md) |
| #114 | Tech debt: minor findings from issue #28 review | Phase 4 | `COMPLETED` | Rust | [issue-114.md](issue-114.md) |
| #116 | Tech debt: minor findings from issue #29 review | Phase 4 | `COMPLETED` | Rust | [issue-116.md](issue-116.md) |
| #118 | Tech debt: minor findings from issue #30 review | Phase 4 | `COMPLETED` | Rust | [issue-118.md](issue-118.md) |
| #120 | Tech debt: minor findings from issue #31 review | Phase 4 | `COMPLETED` | Rust | [issue-120.md](issue-120.md) |
| #122 | Tech debt: minor findings from issue #32 review | Phase 4 | `COMPLETED` | Rust | [issue-122.md](issue-122.md) |
| #126 | Tech debt: minor findings from issue #33 review | Phase 4 | `COMPLETED` | Rust | [issue-126.md](issue-126.md) |
| #34 | Implement WriteMemory gRPC endpoint | Phase 4 | `COMPLETED` | Rust | [issue-034.md](issue-034.md) |
| #35 | Implement QueryMemory gRPC endpoint (server-streaming) | Phase 4 | `COMPLETED` | Rust | [issue-035.md](issue-035.md) |
| #36 | Implement GetCorrelated gRPC endpoint | Phase 4 | `COMPLETED` | Rust | [issue-036.md](issue-036.md) |
| #37 | Integration tests for Memory Service | Phase 4 | `COMPLETED` | Rust | [issue-037.md](issue-037.md) |
| #38 | Scaffold Model Gateway Rust project | Phase 5 | `COMPLETED` | Rust | [issue-038.md](issue-038.md) |
| #39 | Implement Ollama HTTP client | Phase 5 | `COMPLETED` | Rust | [issue-039.md](issue-039.md) |
| #40 | Implement model routing logic | Phase 5 | `COMPLETED` | Rust | [issue-040.md](issue-040.md) |
| #41 | Implement StreamInference gRPC endpoint | Phase 5 | `COMPLETED` | Rust | [issue-041.md](issue-041.md) |
| #42 | Implement Inference + GenerateEmbedding endpoints | Phase 5 | `COMPLETED` | Rust | [issue-042.md](issue-042.md) |
| #43 | Integration tests for Model Gateway | Phase 5 | `COMPLETED` | Rust | [issue-043.md](issue-043.md) |
| #44 | Set up SearXNG Docker container | Phase 6 | `COMPLETED` | Docker / YAML | [issue-044.md](issue-044.md) |
| #45 | Scaffold Search Service Python project | Phase 6 | `COMPLETED` | Python | [issue-045.md](issue-045.md) |
| #46 | Implement SearXNG query + snippet filter | Phase 6 | `COMPLETED` | Python | [issue-046.md](issue-046.md) |
| #47 | Implement readability-lxml extraction pipeline | Phase 6 | `COMPLETED` | Python | [issue-047.md](issue-047.md) |
| #48 | Implement summarization step via Model Gateway | Phase 6 | `COMPLETED` | Python | [issue-048.md](issue-048.md) |
| #49 | Implement Search gRPC endpoint | Phase 6 | `COMPLETED` | Python | [issue-049.md](issue-049.md) |
| #50 | Integration tests for Search Service | Phase 6 | `COMPLETED` | Python | [issue-050.md](issue-050.md) |
## Status Legend
- `PLANNED` — Plan written, not yet started
- `IMPLEMENTING` — Currently being implemented
- `RETRY` — Implementation failed, retry pending
- `COMPLETED` — Verified and merged
- `BLOCKED` — Blocked after max retries, needs manual intervention
## Service Map
### Audit Service
- [issue-009.md](issue-009.md) — audit.proto (AuditService, AuditEntry)
- [issue-018.md](issue-018.md) — Scaffold Audit Service Rust project
- [issue-019.md](issue-019.md) — Append-only file log backend
- [issue-020.md](issue-020.md) — Append gRPC endpoint with validation
- [issue-021.md](issue-021.md) — Integration tests (gRPC client→server)
### Secrets Service
- [issue-010.md](issue-010.md) — secrets.proto (SecretsService, GetSecret)
- [issue-022.md](issue-022.md) — Scaffold Secrets Service Rust project
- [issue-023.md](issue-023.md) — libsecret / D-Bus backend (keyring crate)
- [issue-024.md](issue-024.md) — Kernel keyring fallback (linux-keyutils)
- [issue-025.md](issue-025.md) — GetSecret gRPC endpoint with audit logging
- [issue-026.md](issue-026.md) — Integration tests (mock audit, full gRPC flow)
### Memory Service
- [issue-011.md](issue-011.md) — memory.proto (MemoryService, MemoryEntry)
- [issue-027.md](issue-027.md) — Scaffold Memory Service Rust project
- [issue-028.md](issue-028.md) — DuckDB schema, VSS extension, HNSW indexes, migrations
- [issue-029.md](issue-029.md) — Embedding generation integration (Model Gateway gRPC client, batch support, DuckDB storage)
- [issue-030.md](issue-030.md) — Staged retrieval pipeline (4-stage coarse-to-fine: HNSW search, description re-rank, corpus re-rank, threshold cutoff)
- [issue-031.md](issue-031.md) — Extraction step (Model Gateway inference for query extraction)
- [issue-032.md](issue-032.md) — Semantic cache (cosine similarity cache with TTL and eviction)
- [issue-033.md](issue-033.md) — Provenance tagging and poisoning protection
- [issue-034.md](issue-034.md) — WriteMemory gRPC endpoint (embedding + provenance + DuckDB storage + audit logging)
- [issue-035.md](issue-035.md) — QueryMemory gRPC endpoint (server-streaming, staged retrieval + extraction + cache)
- [issue-036.md](issue-036.md) — GetCorrelated gRPC endpoint (correlation lookup by memory ID, session, and explicit IDs + audit logging)
### Model Gateway
- [issue-012.md](issue-012.md) — model_gateway.proto (ModelGatewayService)
- [issue-038.md](issue-038.md) — Scaffold Model Gateway Rust project
- [issue-039.md](issue-039.md) — Ollama HTTP client (reqwest, streaming, embeddings)
- [issue-040.md](issue-040.md) — Model routing logic (task complexity routing, alias expansion, audit logging)
- [issue-041.md](issue-041.md) — StreamInference gRPC endpoint (server-streaming, Ollama bridge, params mapping)
### Search Service
- [issue-013.md](issue-013.md) — search.proto (SearchService)
### Tool Broker
- [issue-014.md](issue-014.md) — tool_broker.proto (ToolBrokerService)
### Orchestrator
- [issue-015.md](issue-015.md) — orchestrator.proto (OrchestratorService)
### Proto Definitions
- [issue-007.md](issue-007.md) — Proto project structure and build tooling
- [issue-008.md](issue-008.md) — Common proto shared types (SessionContext, AgentLineage, AgentType)
### Infrastructure / DevOps
- [issue-016.md](issue-016.md) — Rust stub generation (prost/tonic via build.rs)
- [issue-017.md](issue-017.md) — Python stub generation (buf generate)