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:
@@ -0,0 +1,13 @@
|
||||
All verification complete — everything is green, no fixes were needed on this pass.
|
||||
|
||||
**Phase 40 (tuning-toggle-flash) — final verification pass report**
|
||||
|
||||
- Verified (not re-implemented; tasks 01/02 already in `complete/`, phase commit `6f9e033` exists): all six pages ship `#steering-toggle` with `hidden`; `header.js` admin branch unhides *before* `refreshSteering()`, anonymous branch removes toggle+panel (phase-16 "absent" contract intact); unit pins (6 tests) + story E2E (4 tests) in place.
|
||||
- `uv run pytest --cov=app --cov-report=term-missing` → 701 passed; **TOTAL 99%** (>90%; unchanged — phase commit touches zero `app/` files).
|
||||
- `uv run pytest tests/e2e/test_tuning_toggle_flash.py -v --no-cov` → **4 passed** in isolation (zero visible frames via MutationObserver + DOM-absent for anonymous on /, /sources.html, /tuning.html, /login.html; document/git-sources pinned at source level; admin reveal + panel + badge 0→1; observer self-check guards vacuity).
|
||||
- Regression E2Es in isolation: `test_shared_header` 6 ✅, `test_global_tuning` 6 ✅, `test_steering` 4 ✅, `test_tuning_nav_link` 4 ✅, `test_smoke` 3 ✅.
|
||||
- `uv run ruff check . && uv run pyright` → clean (0 errors).
|
||||
- UI Structure Check: no new focus targets (hidden attr only, no new elements), 0 CSS changes (landmarks/contrast unchanged), no external refs (grep + no-CDN integration test ✅).
|
||||
- Commit criterion: single atomic `--no-gpg-sign` commit `6f9e033 fix(header): ship the tuning toggle hidden — no anonymous flash`; `commit.gpgsign=false`; task files already in `.agents/phases/complete/40_tuning_toggle_flash/` (harness owns the `00_phase.md` move).
|
||||
- No deviations; worktree holds only harness bookkeeping + untracked `NOTES.md` (owner file, untouched).
|
||||
- Next pending phase: **`41_sync_fail_fast_models`**.
|
||||
@@ -0,0 +1,59 @@
|
||||
........................................................................ [ 10%]
|
||||
........................................................................ [ 20%]
|
||||
........................................................................ [ 30%]
|
||||
........................................................................ [ 41%]
|
||||
........................................................................ [ 51%]
|
||||
........................................................................ [ 61%]
|
||||
........................................................................ [ 71%]
|
||||
........................................................................ [ 82%]
|
||||
........................................................................ [ 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 122 0 100%
|
||||
app/api/config.py 7 0 100%
|
||||
app/api/docs.py 23 0 100%
|
||||
app/api/git_sources.py 66 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 80 0 100%
|
||||
app/config.py 66 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 60 0 100%
|
||||
app/rag/__init__.py 0 0 100%
|
||||
app/rag/agent.py 81 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 174 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 99 0 100%
|
||||
--------------------------------------------
|
||||
TOTAL 1754 12 99%
|
||||
coverage gate: app/ 99% (>90%) OK
|
||||
All checks passed!
|
||||
0 errors, 0 warnings, 0 informations
|
||||
validation OK
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
Everything is complete and verified. The diff is minimal and exactly per spec.
|
||||
|
||||
## Report — Phase 40, Task 01 (toggle ships hidden)
|
||||
|
||||
**Implemented**
|
||||
- Added `hidden` to `#steering-toggle` in all six pages (`index`, `sources`, `document`, `git-sources`, `login`, `tuning`).html — only the attribute added; icon, label, count badge, and aria wiring stay byte-identical
|
||||
- `header.js` `initSharedHeader()`: admin branch now runs `if (steeringToggle) steeringToggle.hidden = false;` immediately before `if (steeringPanel) refreshSteering();`; anonymous `remove()` path untouched (phase-16 "absent, not hidden" preserved); docstring + inline comment updated (ship-hidden / reveal-for-admin, 2026-08-27, TODO.md L3)
|
||||
- New `tests/unit/test_steering_toggle_visibility.py` (6 house-style source pins: hidden in all six pages, markup byte-identical, panel still hidden, admin unhide present + ordered before refresh, anonymous removal intact, `#nav-tuning` still ships hidden)
|
||||
- **Defect fixed (pre-existing):** `tests/e2e/test_steering.py::test_note_rendered_as_text_xss_safe` failed *before* this task — phase 39 added `brand.js` (3rd script tag) but `BASE_SCRIPT_COUNT` still pinned 2; verified via stash, fixed to 3 (XSS note itself never executes — `window.__xss` stays undefined)
|
||||
|
||||
**Results**
|
||||
- `uv run pytest --cov=app --cov-report=term-missing` → 701 passed; TOTAL 99% (1754/12) — unchanged (frontend-only change)
|
||||
- `uv run ruff check .` → clean; `uv run pyright` → 0 errors
|
||||
- E2E, each in isolation: `test_shared_header` 6 ✓, `test_global_tuning` 6 ✓, `test_steering` 4 ✓, `test_tuning_nav_link` 4 ✓, `test_smoke` 3 ✓, plus `test_admin_auth` 6 ✓ (admin flow byte-identical)
|
||||
|
||||
**Decisions:** no commit made — task 02 owns the phase's atomic `--no-gpg-sign` commit (A17: one per phase). UI check: no new focus targets (`hidden` = unfocusable), landmarks/contrast/CDN unchanged.
|
||||
|
||||
**Next pending task:** `40_tuning_toggle_flash/02_flash_e2e_and_regression.md` (story E2E suite + regression pass + commit)
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
........................................................................ [ 10%]
|
||||
........................................................................ [ 20%]
|
||||
........................................................................ [ 30%]
|
||||
........................................................................ [ 41%]
|
||||
........................................................................ [ 51%]
|
||||
........................................................................ [ 61%]
|
||||
........................................................................ [ 71%]
|
||||
........................................................................ [ 82%]
|
||||
........................................................................ [ 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 122 0 100%
|
||||
app/api/config.py 7 0 100%
|
||||
app/api/docs.py 23 0 100%
|
||||
app/api/git_sources.py 66 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 80 0 100%
|
||||
app/config.py 66 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 60 0 100%
|
||||
app/rag/__init__.py 0 0 100%
|
||||
app/rag/agent.py 81 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 174 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 99 0 100%
|
||||
--------------------------------------------
|
||||
TOTAL 1754 12 99%
|
||||
coverage gate: app/ 99% (>90%) OK
|
||||
All checks passed!
|
||||
0 errors, 0 warnings, 0 informations
|
||||
validation OK
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
**Phase 40 task 02 complete — all gates green, committed `6f9e033`.**
|
||||
|
||||
- **Implemented:** `tests/e2e/test_tuning_toggle_flash.py` (4 tests): `install_visibility_observer` helper (`add_init_script` MutationObserver recording every frame `#steering-toggle` is attached+visible via `offsetParent !== null || !el.hidden`); anonymous zero-flash + DOM-absent assertions on `/` and `/sources.html` `/tuning.html` `/login.html`; admin reveal (observer self-check), panel open/`aria-expanded`, count badge vs list (0 then 1 via real API POST); nav-link ship-hidden/reveal contract regression. Task 01's fix (6 pages ship `hidden`, `header.js` admin unhide) verified and committed together; fixed pre-existing `test_steering.py` `BASE_SCRIPT_COUNT` 2→3 (phase-39 brand.js).
|
||||
- **E2E:** `uv run pytest tests/e2e/test_tuning_toggle_flash.py -v --no-cov` → **4 passed**; isolation regressions: `test_shared_header` 6 passed, `test_global_tuning` 6, `test_steering` 4, `test_tuning_nav_link` 4, `test_smoke` 3 — all green.
|
||||
- **Unit/integration:** `uv run pytest` → **701 passed**; `uv run pytest --cov=app --cov-report=term-missing` → **TOTAL 1754/12 miss, 99%** (unchanged); `uv run ruff check . && uv run pyright` → clean, 0 errors.
|
||||
- **Commit:** `fix(header): ship the tuning toggle hidden — no anonymous flash` (`--no-gpg-sign`, 11 files, includes the `git add -f` phase-file rename per AGENTS rule 8); `NOTES.md` (owner scratch, untracked) deliberately excluded.
|
||||
- **Deviations:** phase dir move not done by me — harness moves task 02 on success (per executor rules).
|
||||
- **Next pending:** `41_sync_fail_fast_models/01_model_probe_fail_fast.md`.
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
........................................................................ [ 10%]
|
||||
........................................................................ [ 20%]
|
||||
........................................................................ [ 30%]
|
||||
........................................................................ [ 41%]
|
||||
........................................................................ [ 51%]
|
||||
........................................................................ [ 61%]
|
||||
........................................................................ [ 71%]
|
||||
........................................................................ [ 82%]
|
||||
........................................................................ [ 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 122 0 100%
|
||||
app/api/config.py 7 0 100%
|
||||
app/api/docs.py 23 0 100%
|
||||
app/api/git_sources.py 66 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 80 0 100%
|
||||
app/config.py 66 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 60 0 100%
|
||||
app/rag/__init__.py 0 0 100%
|
||||
app/rag/agent.py 81 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 174 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 99 0 100%
|
||||
--------------------------------------------
|
||||
TOTAL 1754 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