refactor(agents): migrate .agent/ planning tree to .agents/

Standardize on the .agents/ directory (shared with project skills):
phases/, user_stories/, reports/, screenshots/, validate.sh, and
phase-sessions/ + pipeline.log all move to .agents/ (git mv preserves
history; runtime artifacts move alongside).

Updates every reference in AGENTS.md, README.md, .gitignore, app
docstrings, and test story headers. Historical KB content in data/
and the runtime pipeline.log transcript are left untouched.
This commit is contained in:
2026-09-05 10:57:07 -04:00
parent 766702c750
commit dbf2af26c6
1118 changed files with 664 additions and 664 deletions
@@ -0,0 +1 @@
Lint and types are clean. Now I'll verify the remaining uncommitted diffs to confirm the Containerfile and TODO.md changes are from phase-50 and check how the previous phase's commit staged files.
@@ -0,0 +1,65 @@
........................................................................ [ 7%]
........................................................................ [ 15%]
........................................................................ [ 22%]
........................................................................ [ 30%]
........................................................................ [ 37%]
........................................................................ [ 45%]
........................................................................ [ 52%]
........................................................................ [ 60%]
........................................................................ [ 67%]
........................................................................ [ 75%]
........................................................................ [ 82%]
........................................................................ [ 90%]
........................................................................ [ 97%]
...................... [100%]
=============================== warnings summary ===============================
.venv/lib/python3.13/site-packages/fastapi/testclient.py:1
/var/home/ducoterra/Projects/Personal/brain_of_reese/.venv/lib/python3.13/site-packages/fastapi/testclient.py:1: StarletteDeprecationWarning: Using `httpx` with `starlette.testclient` is deprecated; install `httpx2` instead.
from starlette.testclient import TestClient as TestClient # noqa
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
================================ tests coverage ================================
_______________ coverage: platform linux, python 3.13.13-final-0 _______________
Name Stmts Miss Cover
-----------------------------------------------
app/__init__.py 1 0 100%
app/api/__init__.py 0 0 100%
app/api/auth.py 22 0 100%
app/api/chat.py 131 0 100%
app/api/chats.py 61 0 100%
app/api/config.py 7 0 100%
app/api/docs.py 23 0 100%
app/api/git_sources.py 143 0 100%
app/api/health.py 10 0 100%
app/api/steering.py 42 0 100%
app/api/suggestions.py 8 0 100%
app/api/sync.py 81 0 100%
app/config.py 79 0 100%
app/core/__init__.py 0 0 100%
app/core/auth.py 20 0 100%
app/core/caching.py 92 0 100%
app/core/debugging.py 29 2 93%
app/core/logging.py 13 0 100%
app/db.py 21 0 100%
app/main.py 46 0 100%
app/models.py 67 0 100%
app/rag/__init__.py 0 0 100%
app/rag/agent.py 78 0 100%
app/rag/archive_upload.py 128 0 100%
app/rag/chunker.py 206 4 98%
app/rag/git_sources.py 14 0 100%
app/rag/importer.py 173 3 98%
app/rag/llm.py 189 0 100%
app/rag/overview.py 71 0 100%
app/rag/prompts.py 65 0 100%
app/rag/retriever.py 94 3 97%
app/rag/suggestions.py 27 0 100%
app/rag/summarizer.py 24 0 100%
app/schemas.py 142 0 100%
-----------------------------------------------
TOTAL 2107 12 99%
coverage gate: app/ 99% (>90%) OK
All checks passed!
0 errors, 0 warnings, 0 informations
validation OK
@@ -0,0 +1,15 @@
## Phase 50 — chat history: final verification pass — GREEN
**Verified** (all 5 task files already in `complete/`; implementation matched spec on inspection): `SavedChat` model + migration `0008` (applied, DB at head), admin-only `/api/chats` CRUD (auto-title = first question, 120-cap, upsert, 403/404/422), chat-page Save button + `?chat=<id>` boot load + New-chat unlink + 404-PUT recreate fallback, `history.html` full-width table (Title/Messages/Updated/Actions) with two-step inline delete, `#nav-history` admin-only link on all 7 pages, cache-busting registration, Containerfile bundle for the new page.
**Results**
- `uv run pytest --cov=app --cov-report=term-missing` → **958 passed**, TOTAL **99%** (>90%)
- `uv run pytest tests/e2e/test_chat_history.py -v --no-cov` → **5 passed** (isolation, DB up)
- Regressions in isolation: `test_chat_persistence` 4, `test_nav_consistency` 6, `test_shared_header` 6, `test_admin_auth` 6, `test_cache_busting` 3 — all passed
- `uv run ruff check .` clean; `uv run pyright` → 0 errors
**Completion criteria:** all met — save/upsert/unlink ✓, history table + `/?chat=<id>` restore + re-save ✓, two-step delete + 404 + cache-busting ✓, anonymous gating (no button/link, 403, no fetch) ✓, pytest/coverage ✓, E2E + 5 regression suites ✓, lint/types ✓, one `--no-gpg-sign` commit **`ece93a7`** made (phase dir already in `complete/`).
**Notable:** committed the phase's Containerfile change (bundles `history.js`/`history.html` for production) inside the phase commit; left the owner's in-progress `TODO.md` additions (2 new items, one empty) uncommitted — not phase-50 work.
**Next pending phase:** `51_share_chat`.
@@ -0,0 +1,65 @@
........................................................................ [ 7%]
........................................................................ [ 15%]
........................................................................ [ 22%]
........................................................................ [ 30%]
........................................................................ [ 37%]
........................................................................ [ 45%]
........................................................................ [ 52%]
........................................................................ [ 60%]
........................................................................ [ 67%]
........................................................................ [ 75%]
........................................................................ [ 82%]
........................................................................ [ 90%]
........................................................................ [ 97%]
...................... [100%]
=============================== warnings summary ===============================
.venv/lib/python3.13/site-packages/fastapi/testclient.py:1
/var/home/ducoterra/Projects/Personal/brain_of_reese/.venv/lib/python3.13/site-packages/fastapi/testclient.py:1: StarletteDeprecationWarning: Using `httpx` with `starlette.testclient` is deprecated; install `httpx2` instead.
from starlette.testclient import TestClient as TestClient # noqa
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
================================ tests coverage ================================
_______________ coverage: platform linux, python 3.13.13-final-0 _______________
Name Stmts Miss Cover
-----------------------------------------------
app/__init__.py 1 0 100%
app/api/__init__.py 0 0 100%
app/api/auth.py 22 0 100%
app/api/chat.py 131 0 100%
app/api/chats.py 61 0 100%
app/api/config.py 7 0 100%
app/api/docs.py 23 0 100%
app/api/git_sources.py 143 0 100%
app/api/health.py 10 0 100%
app/api/steering.py 42 0 100%
app/api/suggestions.py 8 0 100%
app/api/sync.py 81 0 100%
app/config.py 79 0 100%
app/core/__init__.py 0 0 100%
app/core/auth.py 20 0 100%
app/core/caching.py 92 0 100%
app/core/debugging.py 29 2 93%
app/core/logging.py 13 0 100%
app/db.py 21 0 100%
app/main.py 46 0 100%
app/models.py 67 0 100%
app/rag/__init__.py 0 0 100%
app/rag/agent.py 78 0 100%
app/rag/archive_upload.py 128 0 100%
app/rag/chunker.py 206 4 98%
app/rag/git_sources.py 14 0 100%
app/rag/importer.py 173 3 98%
app/rag/llm.py 189 0 100%
app/rag/overview.py 71 0 100%
app/rag/prompts.py 65 0 100%
app/rag/retriever.py 94 3 97%
app/rag/suggestions.py 27 0 100%
app/rag/summarizer.py 24 0 100%
app/schemas.py 142 0 100%
-----------------------------------------------
TOTAL 2107 12 99%
coverage gate: app/ 99% (>90%) OK
All checks passed!
0 errors, 0 warnings, 0 informations
validation OK
@@ -0,0 +1,16 @@
Task complete — report:
**Implemented**
- `app/models.py`: new `SavedChat` model (`id` UUID PK w/ `uuid4` default, `title` String(500), `messages` JSONB `list[dict]` in `bor.chat.v1` shape, `created_at`/`updated_at` TIMESTAMPTZ server-default `now()`, `updated_at` with `onupdate=func.now()`); data-model docstring entry added in house style; no share columns (0009/phase 51).
- `alembic/versions/0008_saved_chats.py`: `revision="0008"`, `down_revision="0007"` (head verified), `op.create_table("saved_chats", …)` (postgresql UUID/JSONB) + `op.drop_table` downgrade.
- `tests/integration/test_migration_0008.py`: house pattern from `test_migration_0007.py` — 5 tests: upgrade creates table w/ locked types/PK/defaults (incl. no `share_token`), server timestamp stamping, ORM `onupdate` bump on update, downgrade drops table, round-trip restores it.
**Results**
- `uv run alembic upgrade head` → `0007 -> 0008` clean; DB at `0008 (head)`
- `uv run pytest tests/integration/test_migration_0008.py -v --no-cov` → 5 passed
- `uv run pytest --cov=app` → 906 passed, 1 warning; TOTAL coverage **99%** (>90% ✓; models.py 100%)
- `uv run ruff check .` → All checks passed; `uv run pyright` → 0 errors, 0 warnings
**Decisions/deviations** — none; no commit made (phase-level commit belongs to task 05 per phase plan).
**Next pending task:** `.agents/phases/todo/50_chat_history/02_chats_api.md` (admin-only CRUD under `/api/chats`).
@@ -0,0 +1,63 @@
........................................................................ [ 7%]
........................................................................ [ 15%]
........................................................................ [ 23%]
........................................................................ [ 31%]
........................................................................ [ 39%]
........................................................................ [ 47%]
........................................................................ [ 55%]
........................................................................ [ 63%]
........................................................................ [ 71%]
........................................................................ [ 79%]
........................................................................ [ 87%]
........................................................................ [ 95%]
.......................................... [100%]
=============================== warnings summary ===============================
.venv/lib/python3.13/site-packages/fastapi/testclient.py:1
/var/home/ducoterra/Projects/Personal/brain_of_reese/.venv/lib/python3.13/site-packages/fastapi/testclient.py:1: StarletteDeprecationWarning: Using `httpx` with `starlette.testclient` is deprecated; install `httpx2` instead.
from starlette.testclient import TestClient as TestClient # noqa
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
================================ tests coverage ================================
_______________ coverage: platform linux, python 3.13.13-final-0 _______________
Name Stmts Miss Cover
-----------------------------------------------
app/__init__.py 1 0 100%
app/api/__init__.py 0 0 100%
app/api/auth.py 22 0 100%
app/api/chat.py 131 0 100%
app/api/config.py 7 0 100%
app/api/docs.py 23 0 100%
app/api/git_sources.py 143 0 100%
app/api/health.py 10 0 100%
app/api/steering.py 42 0 100%
app/api/suggestions.py 8 0 100%
app/api/sync.py 81 0 100%
app/config.py 79 0 100%
app/core/__init__.py 0 0 100%
app/core/auth.py 20 0 100%
app/core/caching.py 92 0 100%
app/core/debugging.py 29 2 93%
app/core/logging.py 13 0 100%
app/db.py 21 0 100%
app/main.py 44 0 100%
app/models.py 67 0 100%
app/rag/__init__.py 0 0 100%
app/rag/agent.py 78 0 100%
app/rag/archive_upload.py 128 0 100%
app/rag/chunker.py 206 4 98%
app/rag/git_sources.py 14 0 100%
app/rag/importer.py 173 3 98%
app/rag/llm.py 189 0 100%
app/rag/overview.py 71 0 100%
app/rag/prompts.py 65 0 100%
app/rag/retriever.py 94 3 97%
app/rag/suggestions.py 27 0 100%
app/rag/summarizer.py 24 0 100%
app/schemas.py 109 0 100%
-----------------------------------------------
TOTAL 2011 12 99%
coverage gate: app/ 99% (>90%) OK
All checks passed!
0 errors, 0 warnings, 0 informations
validation OK
@@ -0,0 +1,16 @@
Task complete. All gates green.
**Implemented (phase 50, task 02 — admin-only `/api/chats` CRUD):**
- `app/schemas.py`: `ToolCall`, `ChatMessage` (`extra="forbid"`, `who` literal, `text` min-1, all 6 optional keys), `SavedChatCreate`/`Update`/`Out`/`Row`/`List`
- `app/api/chats.py`: router-wide `require_admin` gate (steering pattern, A10 extension + owner permission 2026-08-29 recorded in docstring); `GET ""` (`updated_at desc, id desc`, no payloads), `POST` 201 (auto-title = first user msg, collapsed, 120-cap; `"Chat <id-hex8>"` fallback), `GET/PUT/DELETE /{id}` (404 `"unknown chat"`, PUT = full replacement, title only replaced when supplied, `updated_at` bump via ORM `onupdate` — verified)
- `app/main.py`: router registered before the static mount
- `tests/integration/test_chats_api.py`: 27 tests — 403 anonymous ×5 routes, create/list/get/put/delete contract incl. 422 branches (empty messages, `who:"alien"`, extra keys, title >500) and lossless `bor.chat.v1` round-trip
**Verification:**
- `uv run pytest tests/integration/test_chats_api.py -v --no-cov` → 27 passed
- `uv run pytest --cov=app --cov-report=term-missing` → 933 passed, TOTAL **99%** (chats.py 100%)
- `uv run ruff check . && uv run pyright` → clean (0 errors)
**Notable decisions:** store plain `model_dump()` (no `exclude_none`) — app.js persists tool records with explicit `argument: null` and the restore path is null-safe, so this is what makes a real payload round-trip byte-identical; blank/absent `title` on PUT keeps the current title (mirrors create's blank→auto-title convention). No commit made — the phase commit belongs to task 05 per the protocol.
**Next pending task:** `.agents/phases/todo/50_chat_history/03_save_chat_ui.md`
@@ -0,0 +1,64 @@
........................................................................ [ 7%]
........................................................................ [ 15%]
........................................................................ [ 23%]
........................................................................ [ 30%]
........................................................................ [ 38%]
........................................................................ [ 46%]
........................................................................ [ 54%]
........................................................................ [ 61%]
........................................................................ [ 69%]
........................................................................ [ 77%]
........................................................................ [ 84%]
........................................................................ [ 92%]
..................................................................... [100%]
=============================== warnings summary ===============================
.venv/lib/python3.13/site-packages/fastapi/testclient.py:1
/var/home/ducoterra/Projects/Personal/brain_of_reese/.venv/lib/python3.13/site-packages/fastapi/testclient.py:1: StarletteDeprecationWarning: Using `httpx` with `starlette.testclient` is deprecated; install `httpx2` instead.
from starlette.testclient import TestClient as TestClient # noqa
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
================================ tests coverage ================================
_______________ coverage: platform linux, python 3.13.13-final-0 _______________
Name Stmts Miss Cover
-----------------------------------------------
app/__init__.py 1 0 100%
app/api/__init__.py 0 0 100%
app/api/auth.py 22 0 100%
app/api/chat.py 131 0 100%
app/api/chats.py 61 0 100%
app/api/config.py 7 0 100%
app/api/docs.py 23 0 100%
app/api/git_sources.py 143 0 100%
app/api/health.py 10 0 100%
app/api/steering.py 42 0 100%
app/api/suggestions.py 8 0 100%
app/api/sync.py 81 0 100%
app/config.py 79 0 100%
app/core/__init__.py 0 0 100%
app/core/auth.py 20 0 100%
app/core/caching.py 92 0 100%
app/core/debugging.py 29 2 93%
app/core/logging.py 13 0 100%
app/db.py 21 0 100%
app/main.py 46 0 100%
app/models.py 67 0 100%
app/rag/__init__.py 0 0 100%
app/rag/agent.py 78 0 100%
app/rag/archive_upload.py 128 0 100%
app/rag/chunker.py 206 4 98%
app/rag/git_sources.py 14 0 100%
app/rag/importer.py 173 3 98%
app/rag/llm.py 189 0 100%
app/rag/overview.py 71 0 100%
app/rag/prompts.py 65 0 100%
app/rag/retriever.py 94 3 97%
app/rag/suggestions.py 27 0 100%
app/rag/summarizer.py 24 0 100%
app/schemas.py 142 0 100%
-----------------------------------------------
TOTAL 2107 12 99%
coverage gate: app/ 99% (>90%) OK
All checks passed!
0 errors, 0 warnings, 0 informations
validation OK
@@ -0,0 +1,17 @@
Task 03 complete. Final report:
**Implemented**
- `frontend/index.html`: `#save-chat-btn` (save-glyph SVG + "Save", `aria-label="Save chat"`) beside `#new-chat-btn` in `.chat-shell`, ships `hidden`, with the upsert + `?chat=<id>` contract comment (2026-08-29, `TODO.md` L5).
- `frontend/assets/app.js`: `currentChatId` lifecycle (create/open/New chat/404-PUT clear); `saveCurrentChat()` upsert (PUT when linked, POST + link on create, 404→unlink+recreate, live-region "Conversation saved." / "Nothing to save yet.", actionable banners, never-stale disable/finally); `restoreSavedChatFromUrl()` boot-load (valid-uuid + admin gate, pixel-identical `renderStoredMessage` render, localStorage mirror, banner + local-restore fallback); reveal `saveBtn.hidden = !isAdmin`; header contract comment.
- `frontend/assets/styles.css`: `.save-chat-btn` exact `.new-chat-btn` visual family (900px/640px responsive mirrors).
- `tests/unit/test_save_chat_ui.py`: 9 source pins (lifecycle, upsert branch, boot precedence, hidden gate, no new storage access).
**Results**
- `uv run pytest --cov=app --cov-report=term` → 942 passed, TOTAL coverage 99% (>90%)
- `uv run ruff check .` → clean; `uv run pyright` → 0 errors
- Regression E2E in isolation: `test_chat_persistence` 4, `test_nav_consistency` 6, `test_shared_header` 6, `test_admin_auth` 6, `test_cache_busting` 3 — all green
- Browser smoke (10 steps: anonymous absence, reveal, no-op, save, upsert, `?chat=` load, deleted/invalid-id fallback, New-chat unlink) all passed
**Notable decision**: the successful `?chat=<id>` boot-load now normalizes the URL back to `/` (`history.replaceState`) — the param is a one-shot boot instruction; without this, a "New chat" + refresh on the stale `?chat=` URL silently re-opened the old saved chat and evicted the new conversation (caught by smoke testing).
**Next pending task**: `.agents/phases/todo/50_chat_history/04_history_page.md`
@@ -0,0 +1,65 @@
........................................................................ [ 7%]
........................................................................ [ 15%]
........................................................................ [ 22%]
........................................................................ [ 30%]
........................................................................ [ 38%]
........................................................................ [ 45%]
........................................................................ [ 53%]
........................................................................ [ 61%]
........................................................................ [ 68%]
........................................................................ [ 76%]
........................................................................ [ 84%]
........................................................................ [ 91%]
........................................................................ [ 99%]
...... [100%]
=============================== warnings summary ===============================
.venv/lib/python3.13/site-packages/fastapi/testclient.py:1
/var/home/ducoterra/Projects/Personal/brain_of_reese/.venv/lib/python3.13/site-packages/fastapi/testclient.py:1: StarletteDeprecationWarning: Using `httpx` with `starlette.testclient` is deprecated; install `httpx2` instead.
from starlette.testclient import TestClient as TestClient # noqa
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
================================ tests coverage ================================
_______________ coverage: platform linux, python 3.13.13-final-0 _______________
Name Stmts Miss Cover
-----------------------------------------------
app/__init__.py 1 0 100%
app/api/__init__.py 0 0 100%
app/api/auth.py 22 0 100%
app/api/chat.py 131 0 100%
app/api/chats.py 61 0 100%
app/api/config.py 7 0 100%
app/api/docs.py 23 0 100%
app/api/git_sources.py 143 0 100%
app/api/health.py 10 0 100%
app/api/steering.py 42 0 100%
app/api/suggestions.py 8 0 100%
app/api/sync.py 81 0 100%
app/config.py 79 0 100%
app/core/__init__.py 0 0 100%
app/core/auth.py 20 0 100%
app/core/caching.py 92 0 100%
app/core/debugging.py 29 2 93%
app/core/logging.py 13 0 100%
app/db.py 21 0 100%
app/main.py 46 0 100%
app/models.py 67 0 100%
app/rag/__init__.py 0 0 100%
app/rag/agent.py 78 0 100%
app/rag/archive_upload.py 128 0 100%
app/rag/chunker.py 206 4 98%
app/rag/git_sources.py 14 0 100%
app/rag/importer.py 173 3 98%
app/rag/llm.py 189 0 100%
app/rag/overview.py 71 0 100%
app/rag/prompts.py 65 0 100%
app/rag/retriever.py 94 3 97%
app/rag/suggestions.py 27 0 100%
app/rag/summarizer.py 24 0 100%
app/schemas.py 142 0 100%
-----------------------------------------------
TOTAL 2107 12 99%
coverage gate: app/ 99% (>90%) OK
All checks passed!
0 errors, 0 warnings, 0 informations
validation OK
@@ -0,0 +1,16 @@
**Task 04 complete — all gates green.**
**Implemented**
- `frontend/history.html` (new): standard scaffold, shared header, `#nav-history` active link, `#history-gate` (sources-gate pattern), full-width `.history-table` (Title/Messages/Updated/visually-hidden Actions), hidden empty-state row, `role="status"` live region, footer w/ version span
- `frontend/assets/history.js` (new): boot = `initSharedHeader()` → `fetchIsAdmin()`; anonymous → gate in / table out / **no `/api/chats` on the wire**; admin → `GET /api/chats` rows (title = `/?chat=<id>` Open link, ISO `title` attr), inline two-step Delete (no `window.confirm`; focus→Yes; 404/!ok/network keep or drop the row correctly; `Deleted "<title>".` live region)
- `#nav-history` hidden link on all 6 existing pages (after Tuning) + `header.js` reveal-for-admin
- `app/core/caching.py`: `/history.html` in `HTML_PAGES` (+ stale "five" docstring wording fixed); `Containerfile` stage-1: `history.html` cp + `history.js` bundle (required by the containerfile-assets pins)
- CSS: full-width table in the sources-table family, accent title link (focus-visible), error-rose Yes / ghost No, muted empty row, ≤640px actions wrap
- Tests: `tests/unit/test_history_page.py` (new, 13 pins incl. 7-page nav count, no-fetch gate, two-step, `/?chat=` shape), `test_caching.py` pin, `test_api.py` `/history.html` no-CDN + no-cache params, brand/steering page lists extended
- Browser sanity (throwaway E2E, deleted) caught 1 real bug: Delete button missing from the shipped actions cell — fixed + pinned
**Results**
- `uv run pytest`: 958 passed · `--cov=app`: TOTAL 99% · `ruff` + `pyright`: clean
- E2E regressions in isolation: `test_chat_persistence` `test_nav_consistency` `test_shared_header` `test_admin_auth` `test_cache_busting` `test_mobile_hamburger_nav` → 32 passed
**Next pending task:** `.agents/phases/todo/50_chat_history/05_e2e_chat_history.md`
@@ -0,0 +1,65 @@
........................................................................ [ 7%]
........................................................................ [ 15%]
........................................................................ [ 22%]
........................................................................ [ 30%]
........................................................................ [ 37%]
........................................................................ [ 45%]
........................................................................ [ 52%]
........................................................................ [ 60%]
........................................................................ [ 67%]
........................................................................ [ 75%]
........................................................................ [ 82%]
........................................................................ [ 90%]
........................................................................ [ 97%]
...................... [100%]
=============================== warnings summary ===============================
.venv/lib/python3.13/site-packages/fastapi/testclient.py:1
/var/home/ducoterra/Projects/Personal/brain_of_reese/.venv/lib/python3.13/site-packages/fastapi/testclient.py:1: StarletteDeprecationWarning: Using `httpx` with `starlette.testclient` is deprecated; install `httpx2` instead.
from starlette.testclient import TestClient as TestClient # noqa
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
================================ tests coverage ================================
_______________ coverage: platform linux, python 3.13.13-final-0 _______________
Name Stmts Miss Cover
-----------------------------------------------
app/__init__.py 1 0 100%
app/api/__init__.py 0 0 100%
app/api/auth.py 22 0 100%
app/api/chat.py 131 0 100%
app/api/chats.py 61 0 100%
app/api/config.py 7 0 100%
app/api/docs.py 23 0 100%
app/api/git_sources.py 143 0 100%
app/api/health.py 10 0 100%
app/api/steering.py 42 0 100%
app/api/suggestions.py 8 0 100%
app/api/sync.py 81 0 100%
app/config.py 79 0 100%
app/core/__init__.py 0 0 100%
app/core/auth.py 20 0 100%
app/core/caching.py 92 0 100%
app/core/debugging.py 29 2 93%
app/core/logging.py 13 0 100%
app/db.py 21 0 100%
app/main.py 46 0 100%
app/models.py 67 0 100%
app/rag/__init__.py 0 0 100%
app/rag/agent.py 78 0 100%
app/rag/archive_upload.py 128 0 100%
app/rag/chunker.py 206 4 98%
app/rag/git_sources.py 14 0 100%
app/rag/importer.py 173 3 98%
app/rag/llm.py 189 0 100%
app/rag/overview.py 71 0 100%
app/rag/prompts.py 65 0 100%
app/rag/retriever.py 94 3 97%
app/rag/suggestions.py 27 0 100%
app/rag/summarizer.py 24 0 100%
app/schemas.py 142 0 100%
-----------------------------------------------
TOTAL 2107 12 99%
coverage gate: app/ 99% (>90%) OK
All checks passed!
0 errors, 0 warnings, 0 informations
validation OK
@@ -0,0 +1 @@
All 5 story tests pass. Now the regression suites, each in isolation:
@@ -0,0 +1,65 @@
........................................................................ [ 7%]
........................................................................ [ 15%]
........................................................................ [ 22%]
........................................................................ [ 30%]
........................................................................ [ 37%]
........................................................................ [ 45%]
........................................................................ [ 52%]
........................................................................ [ 60%]
........................................................................ [ 67%]
........................................................................ [ 75%]
........................................................................ [ 82%]
........................................................................ [ 90%]
........................................................................ [ 97%]
...................... [100%]
=============================== warnings summary ===============================
.venv/lib/python3.13/site-packages/fastapi/testclient.py:1
/var/home/ducoterra/Projects/Personal/brain_of_reese/.venv/lib/python3.13/site-packages/fastapi/testclient.py:1: StarletteDeprecationWarning: Using `httpx` with `starlette.testclient` is deprecated; install `httpx2` instead.
from starlette.testclient import TestClient as TestClient # noqa
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
================================ tests coverage ================================
_______________ coverage: platform linux, python 3.13.13-final-0 _______________
Name Stmts Miss Cover
-----------------------------------------------
app/__init__.py 1 0 100%
app/api/__init__.py 0 0 100%
app/api/auth.py 22 0 100%
app/api/chat.py 131 0 100%
app/api/chats.py 61 0 100%
app/api/config.py 7 0 100%
app/api/docs.py 23 0 100%
app/api/git_sources.py 143 0 100%
app/api/health.py 10 0 100%
app/api/steering.py 42 0 100%
app/api/suggestions.py 8 0 100%
app/api/sync.py 81 0 100%
app/config.py 79 0 100%
app/core/__init__.py 0 0 100%
app/core/auth.py 20 0 100%
app/core/caching.py 92 0 100%
app/core/debugging.py 29 2 93%
app/core/logging.py 13 0 100%
app/db.py 21 0 100%
app/main.py 46 0 100%
app/models.py 67 0 100%
app/rag/__init__.py 0 0 100%
app/rag/agent.py 78 0 100%
app/rag/archive_upload.py 128 0 100%
app/rag/chunker.py 206 4 98%
app/rag/git_sources.py 14 0 100%
app/rag/importer.py 173 3 98%
app/rag/llm.py 189 0 100%
app/rag/overview.py 71 0 100%
app/rag/prompts.py 65 0 100%
app/rag/retriever.py 94 3 97%
app/rag/suggestions.py 27 0 100%
app/rag/summarizer.py 24 0 100%
app/schemas.py 142 0 100%
-----------------------------------------------
TOTAL 2107 12 99%
coverage gate: app/ 99% (>90%) OK
All checks passed!
0 errors, 0 warnings, 0 informations
validation OK
@@ -0,0 +1 @@
All 5 story tests pass. Now the regression suites, each in isolation:
@@ -0,0 +1,65 @@
........................................................................ [ 7%]
........................................................................ [ 15%]
........................................................................ [ 22%]
........................................................................ [ 30%]
........................................................................ [ 37%]
........................................................................ [ 45%]
........................................................................ [ 52%]
........................................................................ [ 60%]
........................................................................ [ 67%]
........................................................................ [ 75%]
........................................................................ [ 82%]
........................................................................ [ 90%]
........................................................................ [ 97%]
...................... [100%]
=============================== warnings summary ===============================
.venv/lib/python3.13/site-packages/fastapi/testclient.py:1
/var/home/ducoterra/Projects/Personal/brain_of_reese/.venv/lib/python3.13/site-packages/fastapi/testclient.py:1: StarletteDeprecationWarning: Using `httpx` with `starlette.testclient` is deprecated; install `httpx2` instead.
from starlette.testclient import TestClient as TestClient # noqa
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
================================ tests coverage ================================
_______________ coverage: platform linux, python 3.13.13-final-0 _______________
Name Stmts Miss Cover
-----------------------------------------------
app/__init__.py 1 0 100%
app/api/__init__.py 0 0 100%
app/api/auth.py 22 0 100%
app/api/chat.py 131 0 100%
app/api/chats.py 61 0 100%
app/api/config.py 7 0 100%
app/api/docs.py 23 0 100%
app/api/git_sources.py 143 0 100%
app/api/health.py 10 0 100%
app/api/steering.py 42 0 100%
app/api/suggestions.py 8 0 100%
app/api/sync.py 81 0 100%
app/config.py 79 0 100%
app/core/__init__.py 0 0 100%
app/core/auth.py 20 0 100%
app/core/caching.py 92 0 100%
app/core/debugging.py 29 2 93%
app/core/logging.py 13 0 100%
app/db.py 21 0 100%
app/main.py 46 0 100%
app/models.py 67 0 100%
app/rag/__init__.py 0 0 100%
app/rag/agent.py 78 0 100%
app/rag/archive_upload.py 128 0 100%
app/rag/chunker.py 206 4 98%
app/rag/git_sources.py 14 0 100%
app/rag/importer.py 173 3 98%
app/rag/llm.py 189 0 100%
app/rag/overview.py 71 0 100%
app/rag/prompts.py 65 0 100%
app/rag/retriever.py 94 3 97%
app/rag/suggestions.py 27 0 100%
app/rag/summarizer.py 24 0 100%
app/schemas.py 142 0 100%
-----------------------------------------------
TOTAL 2107 12 99%
coverage gate: app/ 99% (>90%) OK
All checks passed!
0 errors, 0 warnings, 0 informations
validation OK