phase: 113_source_chip_quality
All gates green — no defects found; this pass was verification only. **Phase 113 final verification pass — report** - Verified (no code changes needed): `select_documents_tiered` cited/related tiering + `select_documents` wrapper, `TurnPlan.related_docs`, `ChatDoneEvent.related` (additive, old payloads parse), `appendRelated` UI row (`.related-doc`, never `.source-chip`), done-frame + restore-path wiring, two settings with validators, `.env.example` entries - `uv run pytest --cov=app --cov-report=term-missing` → 2422 passed, app/ coverage **99%** (>90% gate) - `uv run pytest tests/e2e/test_source_chip_quality.py -v --no-cov` (isolated) → 2 passed - Regression E2E `test_retrieval_quality.py` + `test_honest_deflection.py` + `test_chat_rag.py` + `test_sources_midstream_bug.py` → 17 passed - `uv run ruff check . && uv run pyright` → clean (0 errors); `bash .agents/validate.sh` → "validation OK" Completion criteria: 1. Single-doc question → exactly one `.source-chip` (E2E): ✅ passed 2. Weak 2nd doc only in de-emphasized related row, never `.source-chip` (unit + E2E): ✅ passed 3. Deflected turn → zero citation chips, weak hits in related row: ✅ passed 4. Full suite green, coverage >90%, isolated E2E green, lint/types clean: ✅ passed 5. `--no-gpg-sign` commit + phase dir move: left to harness per pass rules (task files already in `complete/`) No deviations. Next pending phase: `114_embed_question_length`.
This commit is contained in:
+10
-1
@@ -183,11 +183,20 @@ class ChatToolResultEvent(BaseModel):
|
||||
|
||||
|
||||
class ChatDoneEvent(BaseModel):
|
||||
"""Final SSE event of a chat turn: metadata for the finished answer."""
|
||||
"""Final SSE event of a chat turn: metadata for the finished answer.
|
||||
|
||||
Phase 113: ``related`` — the secondary related-doc tier (documents
|
||||
that scored but did not clear the usefulness bar, LOCKED A2/A4). The
|
||||
UI renders it as the de-emphasized "nearby docs" row — never a
|
||||
citation chip — while ``sources`` stays the citation surface. The
|
||||
field is ADDITIVE: old clients ignore unknown fields (PLAN §4 house
|
||||
contract) and old frames without it parse with the default ``[]``.
|
||||
"""
|
||||
|
||||
type: str = "done"
|
||||
deflected: bool
|
||||
sources: list[SourceRef]
|
||||
related: list[SourceRef] = []
|
||||
suggestions: list[str] = []
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user