ducoterra
1374faf136
Build and Push Containers / build-and-push-app (push) Successful in 2m15s
Build and Push Containers / build-and-push-db (push) Successful in 14s
phase: 112_honesty_gate_weak_hits
**Phase 112 — final verification pass (all 4 tasks already complete in `complete/`):**
- Verified gate fix: `app/api/chat.py::plan_turn` — HIGH iff `best_cosine >= relevance_threshold` OR (`fts_hits > 0` AND `best_cosine >= lexical_support_floor`); `lexical_support_floor` (default 0.35, `BOR_LEXICAL_SUPPORT_FLOOR`, bounds-validated) in `app/config.py` + `.env.example`; A8 revision note (2026-09-14) in `.agents/PLAN.md`.
- Verified prompt contract: `app/rag/prompts.py` diff is docstring-only (dated owner-decision-iii entry); `tests/unit/test_prompt_lock.py` byte-pins PERSONA/TOOLS_SECTION/DEFLECT body (sha256+length).
- Verified README: L11 + L575 deflection copy refreshed; `grep "haven't done anything" README.md` → no hits; disclosed-answer behavior documented.
- Tests: `uv run pytest --cov=app --cov-report=term-missing` → **2378 passed, 99% coverage (>90%)**; includes Mongolia-quadrant unit pins (fts>0 + cosine<floor → LOW).
- E2E in isolation: `uv run pytest tests/e2e/test_honest_deflection.py -v --no-cov` → **4 passed** (out-of-KB question: `deflected=true`, `sources==[]`, 2–3 suggestions); regression `test_chat_rag.py` + `test_retrieval_quality.py` → **7 passed**.
- Lint/types: `uv run ruff check .` → clean; `uv run pyright` → 0 errors.
**Completion criteria:** weak-FTS→LOW unit-pinned ✅ · no false citations + 2–3 alternatives E2E ✅ · prompts byte-identical (test-pinned) + README matches ✅ · suite/coverage/e2e/lint all green ✅ · commit + phase move → left to harness (no `git commit` run, per rules; changes in working tree).
**Deviations:** none. Next pending phase: `113_source_chip_quality`.
2026-09-15 00:37:38 -04:00
..
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 16:04:40 -04:00
2026-09-05 16:59:31 -04:00
2026-09-05 21:50:56 -04:00
2026-09-07 12:39:01 -04:00
2026-09-07 12:39:01 -04:00
2026-09-07 12:39:01 -04:00
2026-09-07 12:39:01 -04:00
2026-09-07 12:39:01 -04:00
2026-09-07 23:08:46 -04:00
2026-09-07 23:54:41 -04:00
2026-09-08 00:33:21 -04:00
2026-09-08 01:11:45 -04:00
2026-09-08 01:56:37 -04:00
2026-09-08 02:38:45 -04:00
2026-09-08 10:03:10 -04:00
2026-09-08 16:02:45 -04:00
2026-09-09 01:45:42 -04:00
2026-09-09 14:08:18 -04:00
2026-09-09 17:22:24 -04:00
2026-09-10 00:23:08 -04:00
2026-09-10 16:43:08 -04:00
2026-09-11 00:59:35 -04:00
2026-09-11 03:42:51 -04:00
2026-09-11 13:16:20 -04:00
2026-09-11 22:48:02 -04:00
2026-09-13 00:23:05 -04:00
2026-09-13 01:57:40 -04:00
2026-09-12 13:37:19 -04:00
2026-09-12 15:16:02 -04:00
2026-09-12 15:56:43 -04:00
2026-09-12 16:37:50 -04:00
2026-09-12 19:45:00 -04:00
2026-09-12 21:26:30 -04:00
2026-09-13 19:28:05 -04:00
2026-09-13 23:21:39 -04:00
2026-09-13 23:57:54 -04:00
2026-09-14 01:27:16 -04:00
2026-09-14 15:55:13 -04:00
2026-09-14 23:07:56 -04:00
2026-09-15 00:37:38 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00