Standardize on the .agents/ directory (shared with project skills): phases/, user_stories/, reports/, screenshots/, validate.sh, and phase-sessions/ + pipeline.log all move to .agents/ (git mv preserves history; runtime artifacts move alongside). Updates every reference in AGENTS.md, README.md, .gitignore, app docstrings, and test story headers. Historical KB content in data/ and the runtime pipeline.log transcript are left untouched.
2.1 KiB
2.1 KiB
Phase 15 complete. Final report:
Implemented
steering_notestable (migration 0003, applied) +SteeringNotemodel +BOR_STEERING_MAX_CHARSsetting- Stateless CRUD:
GET/POST /api/steering(trimmed, 1–2000 chars, 201/422),DELETE /api/steering/{id}(204/404), newest-first list <tuning>prompt section (numbered, budget-capped with[…truncated…]) in both HIGH and DEFLECT prompts, between<relevance>and the mode body; zero-note prompts byte-identical to before; per-turn log gainstuning=N- E2E mock echoes first tuning note as
(tuning: …)suffix - UI: Tune button in every completed brain bubble's meta row (≥44px), inline labeled form (maxlength 2000, keep-on-failure error
role=alert,.tune-savedrole=status), header "Tuning" toggle + count badge + panel (region, newest-first, labeled per-note delete, polite live-region announcer), text-only note rendering (XSS-safe), Phase-08 tokens - README "Tuning your answers" + config rows; owner's persona edits applied (no "you've got this", no mandated deflection opening) with verbatim test aligned
Gates
uv run pytest --cov=app --cov-report=term-missing→ 241 passed, 99% (was 98.9% pre-phase)uv run ruff check .→ clean;uv run pyright→ 0 errorsuv run pytest tests/e2e/test_steering.py -v --no-cov→ 4 passed; regressionstest_chat_rag/test_honest_deflection/test_retrieval_quality+ all 13 other E2E suites green in isolation- Committed:
fc0d9a2 feat(rag): steering notes — tune how Brain answers…(--no-gpg-sign)
Decisions/deviations
.agents/PLAN.mduntouched (harness rule overrides phase step 7) — the PLAN §6 persona revision is recorded inapp/rag/prompts.py+ test docstrings instead; §4/§5/§7.5/§9/roadmap rows still need the harness/owner update- Owner's persona edits weren't present in the (clean) working tree; I applied exactly the two documented edits
- Unit file named
test_steering_prompts.py(basename collision with integrationtest_steering.py); killed a stale pre-change uvicorn squatting on port 8123 that initially masked E2E results
Next pending phase: none — todo/ is empty.