# Phase 05 — Update Featured Projects (Brain of Reese, ServWaf, Local AI Stack) **Story:** n/a **Context:** `src/index.html` `#projects` section (6 `project-card`s), `~/Projects/Personal/brain_of_reese/README.md`, `~/Projects/StackExpected/ServWall/README.md`, `~/Projects/Experimental/gufo/README.md` ## Objective Refresh the Featured Projects grid: (a) replace the "Self-Hosted Services" card with a **Brain of Reese** card (RAG chatbot over homelab docs; pgvector ∪ Postgres full-text hybrid search with RRF fusion; self-hosted LLM; source `https://gitea.reeseapps.com/Experimental/brain-of-reese` — verified live) and move it to the **first** slot; (b) replace the "Kubernetes Cluster" card with a **ServWaf** card (Go network WAF — declarative YAML rules, rate limiting, attack-pattern inspection, opt-in local-AI verdict, TLS/HTTP3 edge — **closed source: no source link**, user decision) in its place; (c) update the **Local AI Stack** card to replace Ollama with **vLLM, Gufo, and llama.cpp** (copy, tech tags, and code preview). Lock with a Playwright regression test. ## Dependencies — (none) ## Tasks 1. `01_brain_of_reese_card.md` — Delete the Self-Hosted Services card; insert the Brain of Reese card as the first card in `#projects`. 2. `02_servwaf_card.md` — Replace the Kubernetes Cluster card with the ServWaf card (description only, no source link). 3. `03_update_local_ai_stack.md` — Update the Local AI Stack card: replace Ollama with vLLM/Gufo/llama.cpp in the copy, tech tags, and code preview. 4. `04_projects_regression_test.md` — Add a Playwright test locking card count, order, the updated Local AI Stack tags, and the absence of the two removed card titles. ## Testing & Quality - Unit/integration: no JS logic changes in this phase — `src/index.html` content only. The quality gate is the E2E regression test (task 4) plus the full suite. - Coverage: **>90%** on new/modified code — vacuously satisfied (no JS/CSS/TS code is modified); the E2E suite is the binding gate. - E2E: full Playwright suite (`npm test`) green. - The phase is "Complete" only when the **entire** project test suite passes 100% (every test in the project, not just this phase's — pre-existing failures included) and achieves **>90% code coverage** on new/modified code. ## Documentation & Consistency - The final pass reviews `README.md` and `AGENTS.md` in full against the project as it stands after this phase — fixing every inconsistency found, **including pre-existing ones not caused by this phase**. - Tasks update `README.md`/`AGENTS.md` immediately when their own changes are user-visible (setup, commands, configuration, features, conventions). ## Completion Criteria - [ ] `grep -c "project-card fade-in" src/index.html` returns 6, and the same holds in `dist/index.html` - [ ] first `project-card` in `#projects` (in `dist/index.html`) is "Brain of Reese" and its card links to `https://gitea.reeseapps.com/Experimental/brain-of-reese` - [ ] `grep -c "Self-Hosted Services\|Kubernetes Cluster" src/index.html` returns 0 (project-card titles removed; the words may still appear in the out-of-scope About/Skills sections — e.g. "Kubernetes" skill tag) - [ ] the Local AI Stack card (in `dist/index.html`) contains vLLM, Gufo, and llama.cpp and no "Ollama" - [ ] new regression test present in `tests/e2e/01-page.spec.js` and passing - [ ] `./build.sh && npm test` fully green (45+ tests) - [ ] no change to the Skills section, About section, or any other section outside `#projects` - [ ] README.md and AGENTS.md are accurate and consistent with the whole project (verified in the final pass)