Files
brain-of-reese/.agent/reports/14_chat_persistence.a1.md
T
ducoterra 4971e2859d
Build and Push Containers / build-and-push-app (push) Successful in 12s
Build and Push Containers / build-and-push-db (push) Successful in 10s
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.
2026-09-01 10:18:22 -04:00

1.5 KiB

Working tree clean, phase committed. Final report:

Phase 14 — Chat persistence: complete

  • app.js: conversation model + save/restore/clear on bor.chat.v1 (raw text only, re-rendered through escape-first markdown; user saved on send, brain on done with sources/deflected/suggestions; 700k-char budget dropping oldest first; every localStorage access try/catch'd; failed turns keep the question)
  • #new-chat-btn ghost pill in chat header (icon-only ≤640px, aria-label, ≥44px), clears key + list, restores empty state, confirms via #send-status live region; ignored mid-turn
  • index.html/styles.css: button + Phase-08 tokens, header layout via margin-left:auto (Sources header unchanged)
  • Tests: new tests/e2e/test_chat_persistence.py (4 story-mapped tests) + tests/unit/test_chat_persistence.py (8 contract pins incl. structural try/catch check)

Results

  • uv run pytest tests/unit tests/integration → 211 passed
  • uv run pytest --cov=app → 99% (gate >90%)
  • uv run ruff check . + uv run pyright → clean, 0 errors
  • Story E2E tests/e2e/test_chat_persistence.py -v --no-cov → 4 passed; all 15 E2E suites green in isolation (incl. regressions: chat_rag 3, suggestion_chips 4, loading_feedback 5, header_consistency 3, responsive_polish 7 — no 360px overflow)
  • Commit 19df7df (--no-gpg-sign)

Deviations: phase step 4 asks for PLAN §7.5/§7.4 notes, but harness rules forbid editing .agent/PLAN.md — left for the harness. Next pending phase: 15_steering_notes.md