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.
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
.agent/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.