Remove the blanket .agent/ gitignore so the phase roadmap, user stories, reports, and PLAN.md are versioned with the code. Only runtime artifacts (.agent/phase-sessions/, .agent/pipeline.log) remain ignored. Update AGENTS.md git protocol rule to match.
1.6 KiB
1.6 KiB
Phase 03 complete. Report:
Phase 03 — Story: Chat RAG Answer (happy path) — COMPLETE (396e4d4)
- Implemented:
app/rag/retriever.py(cosine top-k → parent-doc selection, dedupe, 20k-char cap w/[…truncated…]),app/rag/prompts.py(locked persona + HIGH/DEFLECT builders),LLMClient.chat_stream(+LLMError),POST /api/chatSSE (delta*→done, query_log row, PLAN §9 log line, error event mid-stream, 503 JSON if DB down), UI SSE reader w/ live streaming, source chips→/sources.html, role=alert error banner, always-recovers Send state. - Tests: unit (retriever/prompts/SSE/llm) + integration (real Postgres turn, log row, error/503 + mid-turn failure paths) + new Playwright story suite (grounded answer, query_log, raw SSE shape); smoke placeholder test replaced with the real never-stale contract.
uv run pytest --cov=app --cov-report=term-missing→ 95 passed, TOTAL 98% (chat/llm/prompts/retriever 100%).uv run pytest tests/e2e/test_chat_rag.py -v --no-cov(isolated) → 3 passed;test_smoke.py→ 3 passed;test_import_documents.py(regression) → 3 passed.uv run ruff check .→ clean;uv run pyright→ 0 errors.- Fixed defect (scaffold):
.kb-bannerdisplay:flexoverrode thehiddenattribute → banner always visible; added[hidden]{display:none!important}+ regression assertion. UI verified at 1280px/375px + XSS-escape proof. - Deviations: happy-path scope per phase file — LOW-threshold deflection/amber mode intentionally deferred to phase 04 (HIGH/DEFLECT builders +
deflectedplumbing ready). - Next pending:
.agent/phases/todo/04_story_honest_deflection.md.