phase: 155_folder_summary_voice
All verification is complete — the whole project is 100% green. Final report: **Phase 155 final verification pass — complete.** **Verified (all tasks 01–04 done in `complete/`):** - Instruction nudge in `app/rag/folder_summaries.py` (forbidden openers as the pin, 4 constraints preserved, docstring cites the phase) - `scripts/regen_folder_summaries.py` (import_docs idiom, full mode, cron-safe summary line, fail-loud boot) - Unit pins, integration suite, mock voice update, dedicated E2E suite **Test / lint / coverage:** - `uv run pytest --cov=app -q` → 100% passed (exit 0, zero failures); coverage **99%** on `app/` (>90% ✓) - `uv run pytest tests/e2e/test_folder_summary_voice.py -v --no-cov` → **3 passed** in isolation - `uv run ruff check .` → clean; `uv run pyright` → 0 errors, 0 warnings **Completion criteria:** 1. Marker + header prefix byte-identical — ✅ (git vs HEAD + unit pins verbatim, green) 2. Regen script full regeneration — ✅ (live smoke: exit 0, `folders=… limit=7` summary line; misconfig boot → named stderr, exit 1; `updated_at`-advance/no-prune/canned-text semantics proven by the integration suite, green) 3. Sync path untouched — ✅ (0 diffs to `app/api/sync.py` / `app/rag/importer.py`; phase-127 pins green) 4. E2E stored + rendered without forbidden openers — ✅ (3/3, exact canned-string assertions + phase-127 regression guard) 5. Full suite green, E2E isolated green, ruff + pyright clean, coverage >90% — ✅ 6. Atomic commit — deferred to the harness (working tree left intact per protocol) **Documentation:** README.md and AGENTS.md reviewed in full — verified consistent, no changes needed (README already documents the new script in the update workflow; all `.env.example` vars documented; pages table matches routes; 17 colors = 9+8; no stale mock-voice references). **Decisions:** No live-infrastructure changes (dev-DB read + a 0-row script smoke only). The `TODO.md` working-tree edit is the owner's own, left untouched. **Next pending phase:** `156_table_ux_polish`.
This commit is contained in:
@@ -70,6 +70,12 @@ touches — each document's folder chain up to the source root
|
||||
stored row keeps its text AND ``updated_at``. The
|
||||
``scripts/import_docs.py`` CLI keeps the byte-identical full
|
||||
regeneration (``changed_docs=None``).
|
||||
|
||||
Voice (phase 155, task 01): the locked instruction carries a variety
|
||||
nudge — open in a varied, natural way, never the formulaic
|
||||
"This folder contains…" catalogue (the two forbidden openers are the
|
||||
pin; :data:`FOLDER_SUMMARY_MODE` / :data:`FOLDER_HEADER_PREFIX` stay
|
||||
byte-identical — the mock's keys).
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
@@ -93,17 +99,23 @@ logger = logging.getLogger("app.rag.folder_summaries")
|
||||
#: ``KB_OVERVIEW_MODE``, PLAN §6).
|
||||
FOLDER_SUMMARY_MODE = "FOLDER_SUMMARY_MODE"
|
||||
|
||||
#: Locked instruction for the ``lite`` model (phase 94): the folder
|
||||
#: summary is the drill-down ``ls``'s per-level picture, so it must be
|
||||
#: a short plain-text description of what the folder's documents
|
||||
#: cover — 1–3 sentences (a folder is a skim, not a read: the document
|
||||
#: summary's 3–6 sentences would blow up a 20-folder listing),
|
||||
#: strictly grounded in the listed titles/paths/summary lines.
|
||||
#: Locked instruction for the ``lite`` model (phase 94, voice nudge
|
||||
#: phase 155 task 01): the folder summary is the drill-down ``ls``'s
|
||||
#: per-level picture, so it must be a short plain-text description of
|
||||
#: what the folder's documents cover — 1–3 sentences (a folder is a
|
||||
#: skim, not a read: the document summary's 3–6 sentences would blow
|
||||
#: up a 20-folder listing), strictly grounded in the listed
|
||||
#: titles/paths/summary lines — and it must OPEN in a varied, natural
|
||||
#: way: the formulaic "This folder contains…" catalogue is banned (the
|
||||
#: two forbidden openers below are the pin).
|
||||
FOLDER_SUMMARY_INSTRUCTION = (
|
||||
"From the document list below, write a 1-3 sentence plain-text "
|
||||
"summary of what this folder's documents cover, in natural "
|
||||
"language. Do not use markdown. Do not invent anything that is not "
|
||||
"in the list."
|
||||
"in the list. Open in a varied, natural way — state what the "
|
||||
"folder is for, the way a person would describe it. Do NOT begin "
|
||||
"with 'This folder contains' or 'The <folder name> folder "
|
||||
"contains'."
|
||||
)
|
||||
|
||||
#: Full system prompt: marker first (the mock's key), then the
|
||||
|
||||
Reference in New Issue
Block a user