phase: 172_thinking_level
All verification complete. Final report: **Phase 172 final verification pass — all tasks (01–05) were already complete; verified the whole phase, no code fixes needed.** - **Verified implementation:** `Settings.llm_thinking_level: str = "low"` + `CATALOG` row (`LLM (aipi)` / "Thinking level", plain: not secret/restart/overridable-exempt) + `.env.example` line under `BOR_LLM_CHAT_MODEL` + README table row; `_thinking_extra_body()` → `reasoning_effort` via `extra_body` on `chat()` + `chat_stream()` when trimmed-non-empty, key absent (byte-identical) when empty, embeddings untouched; per-turn line gains `thinking=<value>` (`-` when empty) before `thinking_chars`. - **Tests/lint/coverage (all green):** `uv run pytest` → 4084 passed · `uv run pytest --cov=app --cov-report=term-missing` → 4084 passed, `app/` **99%** (>90%) · `uv run ruff check .` → All checks passed · `uv run pyright` → 0 errors, 0 warnings. - **Completion criteria:** (1) `pytest -k "config and thinking"` 4 passed + `.env.example` grep ✓ (2) live `GET /api/admin/settings` curl shows the row (str, `low`, `default`) + integration PUT/DELETE round-trip ✓ (3) 9 mocked-client unit tests assert `extra_body` present/absent ✓ (4) log-line tests assert `low`/`high`/`-`/whitespace ✓ (5) suite + coverage + lint ✓ (6) `test_thinking_level.py` 3/3 in isolation; `test_admin_settings_panel.py` 12/12; `test_admin_settings_layout.py` 5/5 ✓ (7) atomic commit + phase move = the harness's job (task files already in `complete/`; I ran no git index/history commands). - **Documentation:** README.md reviewed in full — verified consistent (env table complete vs `.env.example`, catalog restart/non-overridable claims re-verified at runtime); AGENTS.md reviewed in full — verified consistent (no rule affected, A5 = no UI change). No changes needed. **Flag (not fixable here):** PLAN.md §9's per-turn-line spec predates the phase-172 `thinking=` field; PLAN.md is off-limits per protocol. - **Next pending phase:** none — `todo/` contains only phase 172 (the harness moves it on this pass's success).
This commit is contained in:
@@ -105,6 +105,14 @@ class Settings(BaseSettings):
|
||||
#: Served by the same OpenAI-compatible endpoint — no new model
|
||||
#: management. Called via ``LLMClient.chat()``.
|
||||
llm_summary_model: str = "lite"
|
||||
#: The model's thinking level (phase 172, ``BOR_LLM_THINKING_LEVEL``) —
|
||||
#: pi-style reasoning effort, free-form text exactly like
|
||||
#: ``llm_chat_model`` (no allowlist — the endpoint is the source of
|
||||
#: truth). Default ``low``. Rides every chat-completions request to
|
||||
#: aipi as the top-level ``reasoning_effort`` parameter
|
||||
#: (``app/rag/llm.py``); the EMPTY value is the off switch — the
|
||||
#: parameter is not sent at all.
|
||||
llm_thinking_level: str = "low"
|
||||
#: Operator kill-switch for the ``thinking`` SSE events (phase 17,
|
||||
#: ``BOR_STREAM_THINKING``; ``0``/``false`` → off). When off, thinking
|
||||
#: pieces are still counted for the per-turn log line but never
|
||||
|
||||
Reference in New Issue
Block a user