fix(rag): lift chat output cap to 32768 tokens — long answers no longer cut off

This commit is contained in:
2026-08-22 11:30:19 -04:00
parent 6ec6181c7b
commit 0da5275eeb
9 changed files with 295 additions and 5 deletions
+34
View File
@@ -0,0 +1,34 @@
# Story: Long Answers (No Truncation)
**Phase:** `11_long_answers.md` · **E2E:** `tests/e2e/test_long_answers.py`
## Narrative
As **a user**, I want Brain to be able to answer at full length (up to
32 768 output tokens) so complex questions ("walk me through the whole
setup", "list every service and its config") get a **complete** answer
instead of one that stops mid-sentence.
- **Given** any question that deserves a long answer
- **When** Brain streams its reply
- **Then** the reply runs to its natural end — the model is allowed up to
32 768 output tokens, not a hard 700-token cap.
## Acceptance criteria
1. `LLMClient.chat_stream` sends `max_tokens` from settings
(`BOR_MAX_OUTPUT_TOKENS`, default **32 768**) — the hard-coded 700 is
gone.
2. A genuinely long streamed answer (several thousand words) arrives
**complete** in the browser — final line intact (E2E).
3. Setting is overridable via env; unit-tested.
4. Unit + integration green, `app/` coverage >90%, story E2E green in
isolation, one `--no-gpg-sign` commit.
## Playwright Mapping Rule
**Test Scenario → `tests/e2e/test_long_answers.py`** (mock LLM, seeded KB):
1. `test_long_answer_streams_to_completion` — question with the
"write a long answer" trigger → mock emits a ~4 000-word deterministic
answer and **honors `max_tokens`** (word-based) → the browser shows the
final line of the answer; under the old 700 cap the tail is missing.
2. `test_normal_answer_unaffected` — a normal question still streams a
complete, short answer.