phase: 150_drop_sync_result
**Phase 150 final verification pass — complete, 100% green.** All 6 task files were already in `complete/`, so this was verification + doc pass. - Verified: `#sync-progress` is the sole sync text surface + sole `aria-live` region (`role="status"`, polite, no `aria-hidden`); `span#sync-result` gone from HTML/JS/CSS/tests (incl. runtime-built `RETIRED_ID` absence pins in the unit suites); `setSyncProgress` single writer with text-driven visibility; running-only box write in `setSyncLabel`; all 9 settle/cancel sites routed; `requestCancel` pre-fetch clear is a NO-OP. - Tests: `uv run pytest` → **3463 passed**; `uv run pytest --cov=app` → **99% on app/** (>90%); `uv run ruff check .` + `uv run pyright` → clean (0 errors); `tests/e2e/test_sync_progress_box.py --no-cov` → **8 passed in isolation**; all 18 migrated sync/image-PDF E2E files green in isolation (77 tests). - Completion criteria: 1) grep clean ✅ 2) sole live region, attrs correct ✅ 3) in-flight/settle/cancel/idle box states proven by E2E + unit pins ✅ 4) icon-only running button + restore ✅ 5) full gates green ✅ 6) no completed-phase behavior change (18 family suites + full suite green) ✅ 7) commit — left to harness per pass instructions (working tree untouched, no `git add`/`commit`). - Documentation: README.md fixed 2 pre-existing inconsistencies (stale `~/Homelab`+`~/Deployments` source model in the intro — retired in phase 61 — now describes the git/local/archive Sources model; "Requires AIPI_KEY" in retrieval-quality now states `BOR_LLM_API_KEY` in `.env` or `$AIPI_KEY`, matching the scripts' real convention). Everything else (URL table, env defaults vs `app/config.py`, sync/phase-150 copy, prod claims) verified accurate. AGENTS.md: verified consistent — no changes needed. - Notable: no code changes were required — the phase implementation was correct as left; no live infrastructure touched. - Next pending phase: `151_pdf_image_extraction` in `.agents/phases/todo/`.
This commit is contained in:
@@ -1,12 +1,13 @@
|
||||
# 🧠 Brain of Reese
|
||||
|
||||
A chippy, honest **RAG chatbot** over your `~/Homelab` and `~/Deployments`
|
||||
projects. Point it at your notes — markdown, YAML, JSON, Python, plain
|
||||
text — ask it anything, and it retrieves the relevant chunks with
|
||||
**hybrid search** (pgvector cosine ∪ Postgres full-text search, fused with
|
||||
Reciprocal Rank Fusion), feeds the **whole relevant document** to a
|
||||
**self-hosted LLM** (`turbo` via `https://aipi.reeseapps.com/v1`), and
|
||||
streams a grounded answer back.
|
||||
A chippy, honest **RAG chatbot** over your homelab documentation — git
|
||||
repositories, local directories, and uploaded archives registered on the
|
||||
admin **Sources** page. Ask it anything about your notes — markdown,
|
||||
YAML, JSON, Python, plain text, and more — and it retrieves the relevant
|
||||
chunks with **hybrid search** (pgvector cosine ∪ Postgres full-text
|
||||
search, fused with Reciprocal Rank Fusion), feeds the **whole relevant
|
||||
document** to a **self-hosted LLM** (`turbo` via
|
||||
`https://aipi.reeseapps.com/v1`), and streams a grounded answer back.
|
||||
|
||||
If it doesn't have notes for your question, it admits it — and offers
|
||||
2-3 concrete alternative questions about things it **does** have notes on.
|
||||
@@ -335,11 +336,15 @@ whole git-source refresh in one click:
|
||||
batch granularity: the first chunk of the in-flight batch over the
|
||||
file's total content chunks) — shows in a text box under the button
|
||||
row, wrapping (never clipped); the same untruncated label rides the
|
||||
button title and the aria-live result line (the sole live region —
|
||||
the box is presentational, `aria-hidden`). On settle the box hides
|
||||
and the button leaves the running state — the "Synced HH:MM" pill
|
||||
after a success (the counts line lands on the result line), the
|
||||
retry-ready "Sync sources" pill after a failure or cancel. No
|
||||
button title and the box, which is the SOLE `aria-live` region for
|
||||
the sync area (`role="status"`, polite — phase 150 folded the
|
||||
pre-phase result-line announcer into the box). At settle the box
|
||||
STAYS visible to carry the result line — the counts line
|
||||
("N added · …") after a success, "Sync cancelled" after a cancel —
|
||||
and the button leaves the running state (the "Synced HH:MM" pill
|
||||
after a success, the retry-ready "Sync sources" pill after a
|
||||
failure); the box hides only when its text is empty (a failed sync
|
||||
— the banner + modal carry the error — and the true idle). No
|
||||
client-side timeout — a clone + embed can legitimately take minutes.
|
||||
- One sync at a time: a second trigger while a run is in flight gets a
|
||||
`409`.
|
||||
@@ -892,7 +897,9 @@ uv run python -m scripts.eval_retrieval "How did I install gitlab?"
|
||||
uv run python -m scripts.eval_retrieval --from-file questions.txt --top 8
|
||||
```
|
||||
|
||||
Requires `AIPI_KEY` in the environment and an imported knowledge base.
|
||||
Requires an aipi key — `BOR_LLM_API_KEY` in `.env` (the stock
|
||||
configuration) or `$AIPI_KEY` in the environment — and an imported
|
||||
knowledge base.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user