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,15 @@
Final verification pass complete — everything green, no defects found to fix.
## Phase 25 — Background: No Motion, Only Fading Light (final verification)
- All tasks (01, 02) already in `complete/`; verified the shipped implementation against the phase overview (CSS redesign, tests, report, story, commit) — no work remaining.
- CSS verified: static grid (`bg-grid-drift` deleted, no `animation` on `body::before`); three opacity-only glow spots (`body::after` 26s / `html::before` 34s −12s / `html::after` 42s −23s); all four layers `fixed; inset:0; z-index:-1; pointer-events:none`; `<html>` keeps `var(--bg)`, `<body>` transparent; reduced-motion stills all four.
- `uv run pytest` → 345 passed (exit 0)
- `uv run pytest --cov=app --cov-report=term-missing` → TOTAL 99% (14/1099 missed) — above the >90% gate; frontend-only change, app/ untouched
- `uv run pytest tests/e2e/test_background_no_motion.py -v --no-cov` → 8/8 passed in isolation (grid static; distinct fades + advancing timelines + measurable screenshot change; keyframe opacity-only audit via `document.styleSheets`; layer contracts; reduced-motion; 360px no overflow)
- Regression E2E in isolation: `test_background_animation.py` 5/5, `test_dark_tech_theme.py` 6/6, `test_responsive_polish.py` 7/7
- `uv run ruff check . && uv run pyright` → clean, 0 errors
- Artifacts: `report.md` documents both root causes with before/after pairs (4 valid 1280×800 PNGs); new story exists; old `background-animation.md` carries the SUPERSEDED note
- Commit `025f57b` is the single `--no-gpg-sign` commit with the exact specified message; stages only this phase's files; dirty `TODO.md` correctly excluded; `00_phase.md` left in `todo/` for the harness to move
Completion criteria: all 10 met. Next pending phase: none — `todo/` contains only this phase.
@@ -0,0 +1,46 @@
........................................................................ [ 20%]
........................................................................ [ 41%]
........................................................................ [ 62%]
........................................................................ [ 83%]
......................................................... [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 33 0 100%
app/api/suggestions.py 8 0 100%
app/config.py 55 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 62 0 100%
--------------------------------------------
TOTAL 1099 14 99%
coverage gate: app/ 99% (>90%) OK
All checks passed!
0 errors, 0 warnings, 0 informations
validation OK
@@ -0,0 +1,18 @@
Task 01 complete — all gates green.
**Implemented**
- `frontend/assets/styles.css`: grid (`body::before`) now static — removed `animation` + deleted `@keyframes bg-grid-drift` (the 0.73px/s down-right jitter); deleted `@keyframes bg-glow-breathe` (the 14s uniform blink); three independent opacity-only glow fades: `body::after` (phase-08 indigo, 26s), new `html::before` (phase-08 cyan, 34s, −12s), new `html::after` (third indigo, 42s, −23s); reduced-motion stills all four layers; section/layer comments document the owner's 2026-08-25 no-movement spec.
- New `tests/unit/test_background_no_motion.py` (11 source pins: no grid animation, deleted keyframes, static texture, exactly 3 opacity-only `bg-*` keyframes, exact spot gradients, distinct slow durations ≥20s, 4-layer plumbing, no-occlusion, reduced motion, no filter/blur) — reuses the three helpers from the animation file per the task.
- Adapted `tests/unit/test_background_animation.py` to the new contract (plumbing pins extended to 4 layers; no-blur/no-JS anchor kept; docstring → phase 25).
- Captured pre-change evidence: `.agents/screenshots/25_background_no_motion/before.png` + `before_4s.png` (67k px changed over 4s — drift + pulse visible).
**Results**
- `uv run pytest tests/unit` → 279 passed
- `uv run pytest --cov=app --cov-report=term-missing` → 345 passed, TOTAL 1099/14 = **99%** (identical to pre-change baseline)
- `uv run ruff check .` → clean; `uv run pyright` → 0 errors
- Visual check in Chromium: static grid + visible spots, content un-occluded (html pseudo-layers paint below content as designed).
**Notes**
- E2E regressions (`tests/e2e/test_background_animation.py`, `test_dark_tech_theme.py`) still pin the superseded 60s/14s drift/breathe — expected; adapting them is task 02, not touched here. No commit made (task 02 owns it); `TODO.md` left dirty as found.
**Next pending task:** `02_e2e_story_suite_commit.md` (E2E story suite, regression adaptations, story file, report + commit).
@@ -0,0 +1,46 @@
........................................................................ [ 20%]
........................................................................ [ 41%]
........................................................................ [ 62%]
........................................................................ [ 83%]
......................................................... [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 33 0 100%
app/api/suggestions.py 8 0 100%
app/config.py 55 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 62 0 100%
--------------------------------------------
TOTAL 1099 14 99%
coverage gate: app/ 99% (>90%) OK
All checks passed!
0 errors, 0 warnings, 0 informations
validation OK
@@ -0,0 +1,17 @@
Task 02 complete. Final report:
**Implemented**
- `tests/e2e/test_background_no_motion.py` — 8-test story gate (static grid, three distinct 26/34/42s opacity-only fades + running state, live `document.styleSheets` no-movement audit, advancing timelines, measurable opacity + clipped-screenshot light change, 4-layer contracts, reduced-motion ×4, 360px pin)
- Adapted `test_background_animation.py` (grid static, `bg-glow-a` running, timelines advance, 4-layer contracts) and `test_dark_tech_theme.py` (static grid + 26/34/42s spots; reduced motion across all four layers)
- Story `.agents/user_stories/background-no-motion.md`; supersession note on `background-animation.md`; report + 4 screenshots (before/after pairs, diff table: grid-only patch bit-identical after vs 2.98/765 before)
**Results (final state, DB up)**
- `uv run pytest` → 345 passed; `uv run pytest --cov=app --cov-report=term-missing` → TOTAL 1099/14 = **99%** (≥ pre-change)
- Isolated: `test_background_no_motion.py` 8/8 (run 3×), `test_background_animation.py` 5/5, `test_dark_tech_theme.py` 6/6, `test_responsive_polish.py` 7/7
- `uv run ruff check . && uv run pyright` → clean (fixed one `FloatRect` typing error in the new suite)
- One `--no-gpg-sign` commit `025f57b` (14 files); `TODO.md` left unstaged
**Deviations**
- Did not `mv` the `todo/` phase dir: `complete/25_background_no_motion` already exists (task 01 moved by harness), and the harness moves task files on success; commit stages the `complete/` copy as it exists.
**Next pending task:** none in `25_background_no_motion` (this was the last task).
@@ -0,0 +1,46 @@
........................................................................ [ 20%]
........................................................................ [ 41%]
........................................................................ [ 62%]
........................................................................ [ 83%]
......................................................... [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 33 0 100%
app/api/suggestions.py 8 0 100%
app/config.py 55 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 62 0 100%
--------------------------------------------
TOTAL 1099 14 99%
coverage gate: app/ 99% (>90%) OK
All checks passed!
0 errors, 0 warnings, 0 informations
validation OK