chore(agent): track .agent/ planning tree in git
Build and Push Containers / build-and-push-app (push) Successful in 12s
Build and Push Containers / build-and-push-db (push) Successful in 10s

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:
2026-09-01 10:18:22 -04:00
parent 5fa620fde5
commit 4971e2859d
818 changed files with 23964 additions and 4 deletions
@@ -0,0 +1,12 @@
**Task 01 complete — report**
- `frontend/index.html` + `frontend/sources.html`: admin-only `#nav-tuning` link (`<a href="/tuning.html" class="nav-link" id="nav-tuning" hidden>`) added inside `<nav class="app-nav">` immediately after `#nav-sources`, with the spec's phase-29 comments; no `is-active`, markup/indentation preserved. (Found already applied from a prior interrupted run — verified byte-for-byte against spec, `header.js` lines 69–70 already gate the reveal, left untouched.)
- **Regression found & fixed:** the 3rd nav pill made the chat header overflow at 375px admin (381 > 375, `test_mobile_bar_fits_and_heights_held` failed). Fixed with a mobile-only (≤640px) CSS squeeze in `frontend/assets/styles.css`: `.nav-link` padding `0.55rem→0.4rem` + font `0.88rem→0.84rem`, `.app-nav` gap `0.25rem→0.15rem`, `.header-inner` gap `0.6rem→0.5rem` — bar fits 375px *and* 360px, 44px touch floor and 58/64px pinned heights unchanged (brand text was already the exhausted squeeze target).
Results:
- `uv run pytest --cov=app --cov-report=term-missing` → 390 passed, TOTAL **99%** (no backend change, gate >90%)
- `uv run ruff check . && uv run pyright` → clean (0 errors)
- E2E in isolation, all green: `test_shared_header` 6, `test_header_consistency` 3, `test_responsive_polish` 7, `test_dark_tech_theme` 6, `test_smoke` 3, `test_global_tuning` 6, `test_admin_auth` 6
- No commit made (commit is task 02's). Working tree also carries the owner's manual `TODO.md` edits — out of scope, left untouched for task 02's selective staging.
- Next pending task: `02_tuning_nav_e2e_and_regression.md` (new `test_tuning_nav_link.py` suite + regression verify + commit).
@@ -0,0 +1,47 @@
........................................................................ [ 18%]
........................................................................ [ 36%]
........................................................................ [ 55%]
........................................................................ [ 73%]
........................................................................ [ 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 95 0 100%
app/api/docs.py 23 0 100%
app/api/health.py 10 0 100%
app/api/steering.py 42 0 100%
app/api/suggestions.py 8 0 100%
app/config.py 60 0 100%
app/core/__init__.py 0 0 100%
app/core/auth.py 20 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 36 0 100%
app/models.py 46 0 100%
app/rag/__init__.py 0 0 100%
app/rag/chunker.py 206 4 98%
app/rag/importer.py 150 5 97%
app/rag/llm.py 105 0 100%
app/rag/prompts.py 44 0 100%
app/rag/retriever.py 93 3 97%
app/rag/suggestions.py 27 0 100%
app/schemas.py 68 0 100%
--------------------------------------------
TOTAL 1119 14 99%
coverage gate: app/ 99% (>90%) OK
All checks passed!
0 errors, 0 warnings, 0 informations
validation OK
@@ -0,0 +1,18 @@
Phase 29 task 02 complete. Report:
**Implemented**
- `tests/e2e/test_tuning_nav_link.py` — 4-test story suite: admin sees `#nav-tuning` on Chat/Sources (visible after whoami, `href=/tuning.html`, click navigates, becomes `is-active` on the tuning page), anonymous sees it `hidden` + `[hidden]` on both pages (Sign in visible, Sources hidden), and a11y/no-CDN (real keyboard Tab walk lands focus on the labeled `<a>` with solid ≥2px `:focus-visible` outline; all `script[src]`/`link[href]` same-origin or `data:`).
- Committed the phase-29 markup from task 01 (nav link in `frontend/index.html` + `frontend/sources.html`, mobile header squeeze in `frontend/assets/styles.css`) in the same atomic commit.
**Gates** (all green)
- `uv run pytest tests/e2e/test_tuning_nav_link.py -v --no-cov` → 4 passed
- In isolation: `test_header_consistency.py` 3, `test_shared_header.py` 6, `test_smoke.py` 3, `test_global_tuning.py` 6 — all passed
- `uv run pytest tests/integration/test_api.py::test_html_pages_served_locally_no_cdn -v --no-cov` → 5 passed (task file cited stale name `test_index_html_served_locally`; this is the actual no-CDN gate covering `/` + `/sources.html`)
- `uv run pytest` → 390 passed; `--cov=app` TOTAL 99% (1119/14) — unchanged (no backend change)
- `uv run ruff check .` clean; `uv run pyright` → 0 errors
**Notes**
- Playwright `to_have_class` treats strings as exact match — used `re.compile(r"\bis-active\b")` like the existing suites.
- One `--no-gpg-sign` commit: `3841bd5 feat(ui): expose Global Tuning from Chat + Sources headers (admin-only Tuning nav link)` (7 files). Phase dir moved to `.agent/phases/complete/29_tuning_nav_link/`. `TODO.md` left uncommitted (not a phase file).
**Next pending task:** none — `.agent/phases/todo/` is empty.
@@ -0,0 +1,47 @@
........................................................................ [ 18%]
........................................................................ [ 36%]
........................................................................ [ 55%]
........................................................................ [ 73%]
........................................................................ [ 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 95 0 100%
app/api/docs.py 23 0 100%
app/api/health.py 10 0 100%
app/api/steering.py 42 0 100%
app/api/suggestions.py 8 0 100%
app/config.py 60 0 100%
app/core/__init__.py 0 0 100%
app/core/auth.py 20 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 36 0 100%
app/models.py 46 0 100%
app/rag/__init__.py 0 0 100%
app/rag/chunker.py 206 4 98%
app/rag/importer.py 150 5 97%
app/rag/llm.py 105 0 100%
app/rag/prompts.py 44 0 100%
app/rag/retriever.py 93 3 97%
app/rag/suggestions.py 27 0 100%
app/schemas.py 68 0 100%
--------------------------------------------
TOTAL 1119 14 99%
coverage gate: app/ 99% (>90%) OK
All checks passed!
0 errors, 0 warnings, 0 informations
validation OK