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:
@@ -0,0 +1,15 @@
|
||||
All gates green. Final report:
|
||||
|
||||
**Phase 58 — 2× reading column on wide desktops (final verification pass; both tasks already in `complete/`)**
|
||||
|
||||
- Verified implementation on disk: `--chat-column: 46rem` in `:root`, `@media (min-width: 1500px)` block → `92rem` (+ `.doc-shell` cap-lift so `.doc-md` isn't pinned by the 72rem `.container`), four selectors (`.chat-shell`, `.shared-shell`, `.doc-md`, `.doc-summary:has(+ .doc-md)`) on `var(--chat-column)`, `.tuning-shell` hard-coded `46rem`, comments carry provenance. Commit `7b7a834` (`--no-gpg-sign`) present; tree clean.
|
||||
- `uv run pytest --cov=app --cov-report=term-missing` → **1103 passed, TOTAL 99%** (>90% ✓)
|
||||
- `uv run pytest tests/e2e/test_wide_desktop_column.py -v --no-cov` → **4 passed** (1920px ≈1472px, 1280px ≈736px, 360/900px unchanged, no overflow)
|
||||
- Regressions in isolation: `test_responsive_polish` **7**, `test_smoke` **3**, `test_document_viewer` **7**, `test_markdown_tables` **6**, `test_shared_header` **6** — all passed
|
||||
- `uv run ruff check . && uv run pyright` → clean (0 errors)
|
||||
|
||||
**Completion criteria:** 1920px ≈1472px (3 surfaces + summary) ✓ · 1280px ≈736px + 360/900px untouched ✓ · `.tuning-shell` 46rem at all widths ✓ · unit suite + coverage ✓ · phase E2E isolated ✓ · 5 regression suites isolated ✓ · lint/types ✓ · single commit ✓ (phase dir move: task files already in `complete/`; `00_phase.md` move is the harness's per protocol)
|
||||
|
||||
**Deviations:** none found — no defects; repo left as committed.
|
||||
|
||||
**Next pending phase:** `59_response_to_docs_push` (then `60_sticky_navbar`).
|
||||
@@ -0,0 +1,68 @@
|
||||
........................................................................ [ 6%]
|
||||
........................................................................ [ 13%]
|
||||
........................................................................ [ 19%]
|
||||
........................................................................ [ 26%]
|
||||
........................................................................ [ 32%]
|
||||
........................................................................ [ 39%]
|
||||
........................................................................ [ 45%]
|
||||
........................................................................ [ 52%]
|
||||
........................................................................ [ 58%]
|
||||
........................................................................ [ 65%]
|
||||
........................................................................ [ 71%]
|
||||
........................................................................ [ 78%]
|
||||
........................................................................ [ 84%]
|
||||
........................................................................ [ 91%]
|
||||
........................................................................ [ 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 110 0 100%
|
||||
app/api/config.py 7 0 100%
|
||||
app/api/docs.py 50 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 80 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 176 0 100%
|
||||
-----------------------------------------------
|
||||
TOTAL 2269 12 99%
|
||||
coverage gate: app/ 99% (>90%) OK
|
||||
All checks passed!
|
||||
0 errors, 0 warnings, 0 informations
|
||||
validation OK
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
Everything is green. Final report:
|
||||
|
||||
**Implemented (task 01 — wide-column CSS + unit pins)**
|
||||
- `frontend/assets/styles.css`: `--chat-column: 46rem` in `:root` (provenance comment: owner instruction 2026-08-31, TODO L5 / D2); `@media (min-width: 1500px) { :root { --chat-column: 92rem; } }` added alongside the bottom max-width blocks; exactly the four reading selectors (`.chat-shell`, `.shared-shell`, `.doc-md`, `.doc-summary:has(+ .doc-md)`) now cap with `max-width: var(--chat-column)`; all "46rem contract" block comments updated to base 46rem + 2× at ≥1500px; `.tuning-shell` untouched (still literal 46rem); `?v=` cache-bust picks the file up automatically (mtime/size digest).
|
||||
- `tests/unit/test_wide_column_css.py`: 9 house-style pins (token in `:root`, wide block, the four selectors + "exactly four" count, tuning-shell negative pin, no other literal `max-width: 46rem`, provenance in comments).
|
||||
|
||||
**Fixed in previously completed work** (required for green):
|
||||
- `tests/unit/test_shared_page.py`: stale pin asserting `.shared-shell` hard-coded 46rem → now asserts the token contract.
|
||||
- `tests/e2e/test_responsive_polish.py`: AC1 asserted ≤736px at 1600px (now a wide desktop) → 1600px expects 92rem (1472px ±2%), 1280px expects ≤46rem cap; real-browser check passes.
|
||||
|
||||
**Results**
|
||||
- `uv run pytest --cov=app`: 1103 passed, TOTAL coverage 99% (>90% gate)
|
||||
- `uv run ruff check . && uv run pyright`: clean (0 errors)
|
||||
- Regression E2E in isolation: `test_responsive_polish` 7 ✓, `test_smoke` 3 ✓, `test_document_viewer` 7 ✓, `test_markdown_tables` 6 ✓, `test_shared_header` 6 ✓
|
||||
|
||||
**Deviations:** none vs task file; no commit made (the atomic commit belongs to task 02 per the phase overview). Next pending task: `58_wide_desktop_column/02_e2e_wide_column.md`.
|
||||
+68
@@ -0,0 +1,68 @@
|
||||
........................................................................ [ 6%]
|
||||
........................................................................ [ 13%]
|
||||
........................................................................ [ 19%]
|
||||
........................................................................ [ 26%]
|
||||
........................................................................ [ 32%]
|
||||
........................................................................ [ 39%]
|
||||
........................................................................ [ 45%]
|
||||
........................................................................ [ 52%]
|
||||
........................................................................ [ 58%]
|
||||
........................................................................ [ 65%]
|
||||
........................................................................ [ 71%]
|
||||
........................................................................ [ 78%]
|
||||
........................................................................ [ 84%]
|
||||
........................................................................ [ 91%]
|
||||
........................................................................ [ 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 110 0 100%
|
||||
app/api/config.py 7 0 100%
|
||||
app/api/docs.py 50 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 80 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 176 0 100%
|
||||
-----------------------------------------------
|
||||
TOTAL 2269 12 99%
|
||||
coverage gate: app/ 99% (>90%) OK
|
||||
All checks passed!
|
||||
0 errors, 0 warnings, 0 informations
|
||||
validation OK
|
||||
@@ -0,0 +1,9 @@
|
||||
**Phase 58 task 02 complete — report**
|
||||
|
||||
- Implemented `tests/e2e/test_wide_desktop_column.py`: 4 Playwright tests — chat `.chat-shell` 1472px@1920 / 736px@1280 (±4, centered), document `.doc-md` + `.doc-summary:has(+ .doc-md)` (seeded md doc with summary, direct row insert) at both widths, shared `.shared-shell` at 1920 in a fresh anonymous context (real auto-saved chat → public `POST /api/chats/<id>/share` → token row deleted in `finally`), and narrow-unchanged pins (360px no overflow + full-bleed shell; 900px holds 46rem base as the wide-leak discriminator).
|
||||
- **Defect found & fixed (task 01 work):** the `.container` 72rem cap bound on the document page's `.container.doc-shell`, pinning `.doc-md` at 1112px instead of 1472px at 1920. Fixed wide-only inside the existing `@media (min-width: 1500px)` block: `.doc-shell { max-width: calc(var(--chat-column) + 2 * 1.25rem); }` so `.doc-md`'s own 92rem cap binds; sub-1500px byte-for-byte untouched, all task-01 unit pins preserved.
|
||||
- Test results: `uv run pytest tests/e2e/test_wide_desktop_column.py -v --no-cov` → **4 passed** (DB up); regressions in isolation: `test_responsive_polish.py` 7, `test_smoke.py` 3, `test_document_viewer.py` 7, `test_markdown_tables.py` 6, `test_shared_header.py` 6 — all passed.
|
||||
- `uv run pytest --cov=app --cov-report=term-missing` → **1103 passed, TOTAL 99%** (>90% gate); `uv run ruff check .` + `uv run pyright` → clean (fixed one F541 and `ViewportSize` typing in the new suite).
|
||||
- Committed atomically: `7b7a834 feat(web): 2x reading column on wide desktops — 92rem at >=1500px (chat, shared, document view)` (`--no-gpg-sign`, `frontend/` + `tests/` only; `.agent/` untracked per owner instruction 281f355).
|
||||
- Deviations: none; phase-dir move left to the harness per executor protocol.
|
||||
- Next pending: phase 58 has no further tasks; next phases in `todo/` are `59_response_to_docs_push`, then `60_sticky_navbar`.
|
||||
+68
@@ -0,0 +1,68 @@
|
||||
........................................................................ [ 6%]
|
||||
........................................................................ [ 13%]
|
||||
........................................................................ [ 19%]
|
||||
........................................................................ [ 26%]
|
||||
........................................................................ [ 32%]
|
||||
........................................................................ [ 39%]
|
||||
........................................................................ [ 45%]
|
||||
........................................................................ [ 52%]
|
||||
........................................................................ [ 58%]
|
||||
........................................................................ [ 65%]
|
||||
........................................................................ [ 71%]
|
||||
........................................................................ [ 78%]
|
||||
........................................................................ [ 84%]
|
||||
........................................................................ [ 91%]
|
||||
........................................................................ [ 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 110 0 100%
|
||||
app/api/config.py 7 0 100%
|
||||
app/api/docs.py 50 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 80 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 176 0 100%
|
||||
-----------------------------------------------
|
||||
TOTAL 2269 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