Files
brain-of-reese/.agent/reports/15_steering_notes.a1.md
T
ducoterra 4971e2859d
Build and Push Containers / build-and-push-app (push) Successful in 12s
Build and Push Containers / build-and-push-db (push) Successful in 10s
chore(agent): track .agent/ planning tree in git
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.
2026-09-01 10:18:22 -04:00

2.1 KiB
Raw Blame History

Phase 15 complete. Final report:

Implemented

  • steering_notes table (migration 0003, applied) + SteeringNote model + BOR_STEERING_MAX_CHARS setting
  • 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 gains tuning=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-saved role=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 errors
  • uv run pytest tests/e2e/test_steering.py -v --no-cov → 4 passed; regressions test_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.md untouched (harness rule overrides phase step 7) — the PLAN §6 persona revision is recorded in app/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 integration test_steering.py); killed a stale pre-change uvicorn squatting on port 8123 that initially masked E2E results

Next pending phase: none — todo/ is empty.