- Next.js 14+ with App Router and TypeScript - Tailwind CSS and ShadCN UI styling - Zustand state management - Dexie.js for IndexedDB (local-first data) - Auth.js v5 for authentication - BMAD framework integration Co-Authored-By: Claude <noreply@anthropic.com>
72 lines
5.1 KiB
Markdown
72 lines
5.1 KiB
Markdown
# Epic 1 Retrospective: "Active Listening"
|
|
|
|
**Date:** 2026-01-22
|
|
**Epic:** Epic 1 - Core Chat & Teacher Agent
|
|
**Participants:**
|
|
- Bob (Scrum Master)
|
|
- Alice (Product Owner)
|
|
- Charlie (Senior Dev)
|
|
- Dana (QA Engineer)
|
|
- Elena (Junior Dev)
|
|
- Max (Project Lead)
|
|
|
|
## 1. Epic Overview
|
|
|
|
**Goal:** Enable users to start a session, "vent" their raw thoughts, and have the system "Active Listen" (store chat) and "Teach" (probe for details) using a local-first architecture.
|
|
|
|
**Metrics:**
|
|
- **Status:** Complete (4/4 Stories Done)
|
|
- **Velocity:** High (All stories completed efficiently)
|
|
- **Test Coverage:** Excellent (>98 tests passing across stories)
|
|
- **Quality:** High adherence to Logic Sandwich pattern; strict TDD followed.
|
|
|
|
## 2. Successes & Strengths (What went well)
|
|
|
|
* **TDD Discipline:** The team consistently followed Test-Driven Development (Red-Green-Refactor). Every story (1.1 - 1.4) reports comprehensive test coverage, including unit and integration tests.
|
|
* **Architectural Integrity:** The "Logic Sandwich" pattern (UI -> Zustand -> Service -> DB/LLM) was strictly enforced. Code reviews proactively caught violations (e.g., direct DB access in components), ensuring a clean separation of concerns.
|
|
* **Local-First Implementation:** Dexie.js integration works seamlessly. Data privacy (local storage) is robust.
|
|
* **Intent Detection Accuracy:** Story 1.3 achieved >85% accuracy in intent detection using hybrid keyword/heuristic approach, properly enabling the Teacher Agent.
|
|
* **Fast Track Implementation:** Story 1.4 was delivered with a simplified but effective UI integration (toggle in ChatInput), saving development time while meeting user needs.
|
|
|
|
## 3. Challenges & Growth Areas (Where we struggled)
|
|
|
|
* **State Management Nuances:** Early friction with Zustand selectors. Code reviews frequently flagged unnecessary re-renders caused by non-atomic selectors (e.g., `const { x, y } = useStore()`). We've now standardized on `useStore(s => s.x)`.
|
|
* **Testing Streaming Services:** Story 1.4 encountered significant issues mocking the streaming LLM response in tests. This required a fix to `chat-store.test.ts` to properly simulate callbacks (`onIntent`, `onToken`).
|
|
* **Tooling/Config:** Encountered minor friction with Playwright configuration in Vitest (Story 1.3), leading to exclusion of e2e tests from the standard test run.
|
|
* **Missing State:** "isTyping" state was initially missed in Story 1.2, requiring a senior dev intervention to add it for proper UI feedback.
|
|
|
|
## 4. Key Insights & Learnings
|
|
|
|
1. **Atomic Selectors are Non-Negotiable:** For chat applications with high-frequency updates (typing), optimizing re-renders via atomic selectors is critical.
|
|
2. **Mocking Streams is Hard but Essential:** We need a standardized mock helper for the AI SDK's streaming responses to avoid fragility in future tests (especially for Epic 2's Ghostwriter).
|
|
3. **Simple is Better:** The Fast Track toggle in the input box proved far superior UX than a separate header control, proving that keeping controls close to the action works best.
|
|
|
|
## 5. Next Epic Preview: Epic 2 - "The Magic Mirror"
|
|
|
|
**Goal:** Transform chat context into a structured Markdown artifact.
|
|
|
|
**Dependencies:**
|
|
- **Ghostwriter Agent:** Relies on the Intent Detection and LLM Service infrastructure built in Epic 1.
|
|
- **Draft View:** Implementing the "Medium-style" typography (Merriweather) requires updated font configs.
|
|
- **Refinement Loop:** Will need robust streaming support (tested in 1.4).
|
|
|
|
**Readiness Assessment:**
|
|
- **Technical Infrastructure:** Ready. Vercel Edge Runtime is configured.
|
|
- **Data Layer:** ChatLogs schema is flexible enough.
|
|
- **Risks:** The "Refinement Loop" (Regeneration) might introduce complex state management if not carefully architected.
|
|
|
|
## 6. Action Items
|
|
|
|
| Action Item | Owner | Priority | Deadline |
|
|
| :------------------------------------------------------------------------------------------------------------------------ | :------------------- | :------- | :------------------------ |
|
|
| **Create Streaming Mock Helper**<br>Standardize the mock for AI SDK streams to prevent test flake in Epic 2. | Charlie (Senior Dev) | High | Before start of Story 2.1 |
|
|
| **Doc Update: State Management**<br>Explicitly document the "Atomic Selector" rule in `project-context.md` with examples. | Bob (Scrum Master) | Medium | End of Sprint |
|
|
| **Accessibility Audit**<br>Complete the deferred visual label accessibility checks from Story 1.2. | Dana (QA) | Medium | Mid-Epic 2 |
|
|
| **Playwright Config Fix**<br>Resolve the e2e test exclusion issue in Vitest config. | Elena (Junior Dev) | Low | When capacity allows |
|
|
|
|
## 7. Commitments & Conclusion
|
|
|
|
The team is confident moving into Epic 2. The foundation (Local-First DB + Secure LLM Proxy + TDD Pipeline) is solid. We commit to maintaining the strict TDD discipline and architectural boundaries that made Epic 1 a success.
|
|
|
|
**Retrospective Status:** Completed
|