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.
This commit is contained in:
+17
@@ -0,0 +1,17 @@
|
||||
All verification complete — everything is green. Final report:
|
||||
|
||||
**Phase 54 final verification pass** (all 4 task files already in `complete/`; implementation at `c564e31`, worktree clean — verified, no fixes needed):
|
||||
|
||||
- **Conditional `GET` on pages → 200 with current `?v=<token>`**: live-verified `/`, `/history.html` (bogus `If-None-Match` → 200, body refs `styles.css?v=c564e31` = HEAD) ✅
|
||||
- **Pages publish no `etag`/`last-modified`, keep `Cache-Control: no-cache`**: live curl headers confirm ✅
|
||||
- **`/assets/*` unchanged**: `public, max-age=31536000, immutable` + etag/last-modified; conditional `GET` → 304 (live) ✅
|
||||
- **`/api/*` untouched**: `POST /api/chat` → 200 `text/event-stream` (live) ✅
|
||||
- **Bodiless 304/204 passthrough**: unit-covered; `app/core/caching.py` at 100% ✅
|
||||
- **Tests**: `uv run pytest --cov=app --cov-report=term-missing` — all pass (~1060), **TOTAL 99%** > 90% ✅
|
||||
- **Phase E2E**: `uv run pytest tests/e2e/test_asset_cache_revalidation.py -v --no-cov` → **5 passed** in 14.36s ✅
|
||||
- **Regression E2E** (each in isolation): `test_cache_busting`, `test_smoke`, `test_shared_header`, `test_share_chat`, `test_chat_history` → all exit 0 ✅
|
||||
- **Lint**: `uv run ruff check . && uv run pyright` → clean, 0 errors ✅
|
||||
- **README**: "Cache busting: why pages never 304 (phase 54)" + `git rev-parse --short HEAD` token rule + hard-reload deploy note present ✅
|
||||
- **Commit**: `c564e31` with the exact phase message; phase-dir move left to the harness per rules ✅
|
||||
|
||||
Next pending phase: **55_save_share_ux** (`.agent/phases/todo/`).
|
||||
+67
@@ -0,0 +1,67 @@
|
||||
........................................................................ [ 6%]
|
||||
........................................................................ [ 13%]
|
||||
........................................................................ [ 20%]
|
||||
........................................................................ [ 27%]
|
||||
........................................................................ [ 33%]
|
||||
........................................................................ [ 40%]
|
||||
........................................................................ [ 47%]
|
||||
........................................................................ [ 54%]
|
||||
........................................................................ [ 61%]
|
||||
........................................................................ [ 67%]
|
||||
........................................................................ [ 74%]
|
||||
........................................................................ [ 81%]
|
||||
........................................................................ [ 88%]
|
||||
........................................................................ [ 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/chats.py 110 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 89 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 108 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 50 0 100%
|
||||
app/models.py 74 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/sources_meta.py 16 0 100%
|
||||
app/rag/suggestions.py 27 0 100%
|
||||
app/rag/summarizer.py 24 0 100%
|
||||
app/schemas.py 167 0 100%
|
||||
-----------------------------------------------
|
||||
TOTAL 2232 12 99%
|
||||
coverage gate: app/ 99% (>90%) OK
|
||||
All checks passed!
|
||||
0 errors, 0 warnings, 0 informations
|
||||
validation OK
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
All gates green. Task 01 is complete — no commit (per phase protocol, the single atomic commit happens at phase completion in task 04).
|
||||
|
||||
**Task 01 report — `01_page_paths_ignore_conditional_headers`**
|
||||
|
||||
- `app/core/caching.py` only (no `app/main.py` change):
|
||||
- New `_is_known_page()` — single source of truth for `HTML_PAGES` + `/shared/` prefix, shared by inbound strip and outbound rewrite branch.
|
||||
- Inbound strip: `if-none-match` / `if-modified-since` removed from the scope via `MutableHeaders` **before** `call_next`, page paths only — downstream `FileResponse` can no longer 304 a page.
|
||||
- Bodiless guard: 204/304 on a page path passed through with `no-cache` + validators dropped (starlette forbids bodies there; avoids `Response(content=…, status=304)`).
|
||||
- `_no_cache_headers` now drops outbound `etag` / `last-modified`; module + class docstrings record the why (validators describe the file, not the rewritten body; assets 304-safe because URLs are versioned).
|
||||
- Caught a real bug via pyright: `MutableHeaders.pop` doesn't exist in starlette 1.6 (runtime `AttributeError`) — used `del` under membership check instead.
|
||||
- Verified live against `app.main:app`: conditional GETs with matching etag + last-modified on `/`, `/history.html`, `/sources.html` → 200 + rewritten `?v=` body, no validators; `/assets/styles.css` → immutable + etag, conditional still 304; `/api/*` untouched; 204/304 guards pass through bodiless.
|
||||
- Tests/lint: `uv run pytest tests/unit/test_caching.py -v` → 31 passed; `uv run pytest --cov=app --cov-report=term-missing` → 1047 passed, TOTAL **99%** (>90%; the 6 uncovered caching.py lines are the new branches explicitly covered by tasks 02/03); `uv run ruff check . && uv run pyright` → clean; E2E regression `uv run pytest tests/e2e/test_cache_busting.py -v --no-cov` → 4 passed.
|
||||
- Next pending task: `.agent/phases/todo/54_asset_cache_bust_revalidation/02_unit_tests_conditional_pages.md`
|
||||
+67
@@ -0,0 +1,67 @@
|
||||
........................................................................ [ 6%]
|
||||
........................................................................ [ 13%]
|
||||
........................................................................ [ 20%]
|
||||
........................................................................ [ 27%]
|
||||
........................................................................ [ 34%]
|
||||
........................................................................ [ 41%]
|
||||
........................................................................ [ 48%]
|
||||
........................................................................ [ 55%]
|
||||
........................................................................ [ 61%]
|
||||
........................................................................ [ 68%]
|
||||
........................................................................ [ 75%]
|
||||
........................................................................ [ 82%]
|
||||
........................................................................ [ 89%]
|
||||
........................................................................ [ 96%]
|
||||
....................................... [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 110 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 89 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 108 6 94%
|
||||
app/core/debugging.py 29 2 93%
|
||||
app/core/logging.py 13 0 100%
|
||||
app/db.py 21 0 100%
|
||||
app/main.py 50 0 100%
|
||||
app/models.py 74 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/sources_meta.py 16 0 100%
|
||||
app/rag/suggestions.py 27 0 100%
|
||||
app/rag/summarizer.py 24 0 100%
|
||||
app/schemas.py 167 0 100%
|
||||
-----------------------------------------------
|
||||
TOTAL 2232 18 99%
|
||||
coverage gate: app/ 99% (>90%) OK
|
||||
All checks passed!
|
||||
0 errors, 0 warnings, 0 informations
|
||||
validation OK
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
All gates green. Task complete.
|
||||
|
||||
**Implemented** (task 02 — extend `tests/unit/test_caching.py`, +268 lines, all phase-33/50/51 pins untouched):
|
||||
- `_static_page_app` helper: `StaticFiles(html=True)` catch-all + `/api/ping` + conditional-honouring `/shared/{token}` route (same mounting shape as `app/main.py`), token pinned to `"unit-token"`
|
||||
- 8 new tests: conditional `GET /` w/ `If-None-Match` (file etag) → 200+rewrite (the 304-hole regression); same via `If-Modified-Since`; pages publish no `etag`/`last-modified`; bodiless downstream 304 **and** 204 passed through bodiless w/ no-cache + no validators; `/shared/` strip; `/api/*` keeps conditional 304, no injected headers; `/assets/*` keeps immutable + validators + 304
|
||||
- Verified true regression: conditional `GET /` on the un-middleware'd StaticFiles app 304s (defect reproduced); with task-01 fix it 200s rewritten
|
||||
|
||||
**Results**
|
||||
- `uv run pytest tests/unit/test_caching.py -v` → 39 passed
|
||||
- `uv run pytest --cov=app --cov-report=term-missing` → 1055 passed, TOTAL **99%** (>90%), `app/core/caching.py` **100%**
|
||||
- `uv run ruff check .` clean; `uv run pyright` → 0 errors
|
||||
|
||||
**Deviations (all pin the same intent as specified)**
|
||||
- Bodiless-304 test triggers via a non-stripped header (`x-bodiless`): post-fix, a route *cannot* see `if-none-match` on page paths (that's the fix), so the literal spec is unreachable; guard branch + outbound validator drop fully pinned (param 304/204)
|
||||
- `asset_version` monkeypatched directly to `"unit-token"` (its cached result can't be anything else); `get_settings` stub added as instructed
|
||||
- starlette 1.6 defers `FileResponse` stat: file validators derived via `FileResponse(path, stat_result=os.stat(path))` — same etag/last-modified the mount publishes
|
||||
|
||||
No defects found in prior work; task-01's `caching.py` fix left uncommitted as-is (phase commit is task 04's). Next pending: `54_.../03_integration_conditional_get.md`.
|
||||
+67
@@ -0,0 +1,67 @@
|
||||
........................................................................ [ 6%]
|
||||
........................................................................ [ 13%]
|
||||
........................................................................ [ 20%]
|
||||
........................................................................ [ 27%]
|
||||
........................................................................ [ 34%]
|
||||
........................................................................ [ 40%]
|
||||
........................................................................ [ 47%]
|
||||
........................................................................ [ 54%]
|
||||
........................................................................ [ 61%]
|
||||
........................................................................ [ 68%]
|
||||
........................................................................ [ 75%]
|
||||
........................................................................ [ 81%]
|
||||
........................................................................ [ 88%]
|
||||
........................................................................ [ 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/chats.py 110 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 89 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 108 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 50 0 100%
|
||||
app/models.py 74 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/sources_meta.py 16 0 100%
|
||||
app/rag/suggestions.py 27 0 100%
|
||||
app/rag/summarizer.py 24 0 100%
|
||||
app/schemas.py 167 0 100%
|
||||
-----------------------------------------------
|
||||
TOTAL 2232 12 99%
|
||||
coverage gate: app/ 99% (>90%) OK
|
||||
All checks passed!
|
||||
0 errors, 0 warnings, 0 informations
|
||||
validation OK
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
Working tree is as expected: task 01/02 changes (`app/core/caching.py`, `tests/unit/test_caching.py`) plus my new test file remain uncommitted — the atomic phase commit belongs to task 04. Task 03 is complete.
|
||||
|
||||
**Task 03 report**
|
||||
- Added `tests/integration/test_caching_revalidation.py` (tests-only; no `app/`/conftest changes) pinning the phase-54 contract against the real `app.main:app` + real `frontend/` tree:
|
||||
- `test_every_known_page_200s_on_conditional_get` — all 9 `HTML_PAGES` 200 on conditional GET (file etag), current `?v=<token>` body, no validators, identical bodies
|
||||
- `test_dynamic_shared_page_200s_on_conditional_get` — real save+share flow, `/shared/<token>` same contract
|
||||
- `test_assets_keep_immutable_validators_and_304` — assets still immutable + 304 (strip not widened)
|
||||
- `test_api_paths_get_no_cache_headers_and_untouched_stream` — `/api/*` untouched, conditional headers pass through
|
||||
- `test_page_token_matches_process_token` — page token == `asset_version()` (one page load, one version)
|
||||
- Helper `file_validators` uses `FileResponse(path, stat_result=os.stat(path))` — starlette 1.6 defers stat to `__call__`, so the task sketch's bare `FileResponse(...).headers` would raise; matches the unit suite's pattern (task 02)
|
||||
- Tests: `uv run pytest tests/integration/test_caching_revalidation.py -v` → 5 passed (DB up); regressions `test_chat_api.py` + `test_chats_api.py` → 66 passed
|
||||
- Full suite: `uv run pytest --cov=app --cov-report=term-missing` → 1060 passed, TOTAL 99% (>90%; `caching.py` 100%)
|
||||
- Lint/types: `uv run ruff check . && uv run pyright` → all checks passed, 0 errors
|
||||
- Next pending task: `04_e2e_and_docs.md` (E2E suite, README section, regression E2Es, commit)
|
||||
+67
@@ -0,0 +1,67 @@
|
||||
........................................................................ [ 6%]
|
||||
........................................................................ [ 13%]
|
||||
........................................................................ [ 20%]
|
||||
........................................................................ [ 27%]
|
||||
........................................................................ [ 33%]
|
||||
........................................................................ [ 40%]
|
||||
........................................................................ [ 47%]
|
||||
........................................................................ [ 54%]
|
||||
........................................................................ [ 61%]
|
||||
........................................................................ [ 67%]
|
||||
........................................................................ [ 74%]
|
||||
........................................................................ [ 81%]
|
||||
........................................................................ [ 88%]
|
||||
........................................................................ [ 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/chats.py 110 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 89 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 108 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 50 0 100%
|
||||
app/models.py 74 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/sources_meta.py 16 0 100%
|
||||
app/rag/suggestions.py 27 0 100%
|
||||
app/rag/summarizer.py 24 0 100%
|
||||
app/schemas.py 167 0 100%
|
||||
-----------------------------------------------
|
||||
TOTAL 2232 12 99%
|
||||
coverage gate: app/ 99% (>90%) OK
|
||||
All checks passed!
|
||||
0 errors, 0 warnings, 0 informations
|
||||
validation OK
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
All done. Final report:
|
||||
|
||||
**Phase 54, task 04 — complete** (commit `c564e31`, `--no-gpg-sign`)
|
||||
|
||||
- `tests/e2e/test_asset_cache_revalidation.py` (new, 5 tests, A16): document 200 + current `?v=<git short SHA>` + no validators + `no-cache`; second navigation still 200 (exact symptom reproduction); rendered CSS probe (`#messages` `flex-grow: 1`, phase-52 rule); `/sources.html` contract; `/assets/*` still `immutable`-with-`etag`
|
||||
- `README.md`: "Caching / deploys" extended with **Cache busting: why pages never 304 (phase 54)** — token flips on next process start, assets may 304 (URL-versioned), pages never 304 (validators describe the file, not the rewritten bytes), dev restart + one hard-reload note; stale "five known pages" list corrected
|
||||
- No `app/` change (fix already landed in task 01); also committed the pending tracked deletion of phase 53's `todo/.../00_phase.md`
|
||||
|
||||
**Gates (all green):**
|
||||
- `uv run pytest tests/e2e/test_asset_cache_revalidation.py -v --no-cov` → 5 passed (isolation, DB up)
|
||||
- Regressions in isolation: `test_cache_busting` 4, `test_smoke` 3, `test_shared_header` 6, `test_share_chat` 4, `test_chat_history` 5 — all passed
|
||||
- `bash .agent/validate.sh` → validation OK (unit+integration green, app/ coverage **99%** >90%, ruff clean, pyright 0 errors)
|
||||
|
||||
**Deviations:** (1) task's `expect_response("document")` times out in Playwright 1.62 — bare strings are URL globs, not test-ids; used `page.goto()`'s returned Response (same as the phase-33 suite). (2) Overview's `git add -A .agent/` is rejected (`.agent/` gitignored by design) — staged code/README/tests + the tracked .agent deletion instead; (3) phase-dir move left to the harness per its rules.
|
||||
|
||||
**Next pending:** `55_save_share_ux` task 01 (`01_anonymous_save_share_api.md`).
|
||||
+67
@@ -0,0 +1,67 @@
|
||||
........................................................................ [ 6%]
|
||||
........................................................................ [ 13%]
|
||||
........................................................................ [ 20%]
|
||||
........................................................................ [ 27%]
|
||||
........................................................................ [ 33%]
|
||||
........................................................................ [ 40%]
|
||||
........................................................................ [ 47%]
|
||||
........................................................................ [ 54%]
|
||||
........................................................................ [ 61%]
|
||||
........................................................................ [ 67%]
|
||||
........................................................................ [ 74%]
|
||||
........................................................................ [ 81%]
|
||||
........................................................................ [ 88%]
|
||||
........................................................................ [ 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/chats.py 110 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 89 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 108 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 50 0 100%
|
||||
app/models.py 74 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/sources_meta.py 16 0 100%
|
||||
app/rag/suggestions.py 27 0 100%
|
||||
app/rag/summarizer.py 24 0 100%
|
||||
app/schemas.py 167 0 100%
|
||||
-----------------------------------------------
|
||||
TOTAL 2232 12 99%
|
||||
coverage gate: app/ 99% (>90%) OK
|
||||
All checks passed!
|
||||
0 errors, 0 warnings, 0 informations
|
||||
validation OK
|
||||
Reference in New Issue
Block a user