| # Tech Debt & Bug Fix Specs | |
| **Status:** AWAITING SENIOR REVIEW | |
| **Created:** 2025-12-06 | |
| --- | |
| ## Overview | |
| These specs consolidate all identified bugs, tech debt, and architectural issues into phased, implementable work packages. Each spec is designed to be a single PR with TDD, SOLID, DRY, Gang of Four principles. | |
| **Implementation Order:** SPEC-20 β SPEC-21 β SPEC-22 | |
| --- | |
| ## Spec Index | |
| | Spec | Title | Priority | Effort | Status | | |
| |------|-------|----------|--------|--------| | |
| | [SPEC-20](./SPEC-20-PUBMED-JSON-FIX.md) | PubMed JSON Parsing Fix | P2 | 15 min | READY | | |
| | [SPEC-21](./SPEC-21-MIDDLEWARE-ARCHITECTURE.md) | Middleware Architecture Refactor | P2 | 2 hours | READY | | |
| | [SPEC-22](./SPEC-22-PROGRESS-BAR-REMOVAL.md) | Progress Bar Removal | P3 | 15 min | READY | | |
| **Total Effort:** ~2.5 hours | |
| --- | |
| ## Why This Order? | |
| ### SPEC-20 First (15 min) | |
| - Quickest win | |
| - Fixes a real crash bug | |
| - Builds confidence before larger refactor | |
| - Single file, single PR | |
| ### SPEC-21 Second (2 hours) | |
| - The big architectural fix | |
| - Renames confusing folder | |
| - Implements proper MS framework patterns | |
| - Fixes HuggingFace retry bug THE RIGHT WAY | |
| - Adds token tracking | |
| ### SPEC-22 Last (15 min) | |
| - Cosmetic only | |
| - Can be deferred if needed | |
| - Easy cleanup | |
| --- | |
| ## What These Specs Consolidate | |
| These specs replace the scattered documentation in: | |
| | Old Location | Now Covered By | | |
| |--------------|----------------| | |
| | `docs/bugs/p2-hardening-issues.md` Issue 1 | SPEC-20 | | |
| | `docs/bugs/p2-hardening-issues.md` Issue 2 | SPEC-21 | | |
| | `docs/architecture/adr-001-middleware-refactor.md` | SPEC-21 | | |
| | `docs/bugs/p3-progress-bar-positioning.md` | SPEC-22 | | |
| --- | |
| ## What's NOT In These Specs (Deferred P3) | |
| The following are documented but deferred for later: | |
| 1. **OpenTelemetry observability** - Nice to have, not blocking | |
| 2. **Thread state serialization** - Nice to have, not blocking | |
| 3. **ResearchMemory locks** - Not a bug today (sequential execution) | |
| 4. **Error path cleanup** - Minor resource leakage, GC handles it | |
| 5. **Per-tool configuration** - Nice to have | |
| 6. **Context provider lifecycle** - Nice to have | |
| These remain documented in `docs/bugs/p3-ms-framework-gaps.md` for future work. | |
| --- | |
| ## Implementation Protocol | |
| For each spec: | |
| 1. **Read the spec** - Understand the problem and solution | |
| 2. **TDD** - Write failing test first | |
| 3. **Implement** - Minimal code to pass tests | |
| 4. **Run `make check`** - Lint + typecheck + test | |
| 5. **Commit** - Single commit per spec | |
| 6. **PR** - One PR per spec with spec number in title | |
| --- | |
| ## Commit Message Format | |
| ``` | |
| fix: PubMed JSON parsing (SPEC-20) | |
| Moves JSON parsing inside try/except block to handle API | |
| maintenance pages gracefully. Adds JSONDecodeError handling. | |
| Fixes: production crash on PubMed maintenance pages | |
| ``` | |
| ``` | |
| refactor: middleware architecture (SPEC-21) | |
| - Renames src/middleware β src/workflows (accurate naming) | |
| - Creates proper src/middleware with ChatMiddleware implementations | |
| - Implements RetryMiddleware (fixes HuggingFace 429 crashes) | |
| - Implements TokenTrackingMiddleware (enables cost monitoring) | |
| ``` | |
| ``` | |
| fix: remove progress bar overlap (SPEC-22) | |
| Removes gr.Progress() from research_agent function. | |
| Gradio's Progress is incompatible with ChatInterface. | |
| Emoji status messages in chat output are retained. | |
| ``` | |
| --- | |
| ## Senior Review Checklist | |
| Before implementation, please verify: | |
| - [ ] SPEC-20: Fix approach is correct (move into try/except) | |
| - [ ] SPEC-21: MS middleware pattern is used correctly | |
| - [ ] SPEC-21: RetryMiddleware implementation follows framework conventions | |
| - [ ] SPEC-21: Folder rename won't break anything else | |
| - [ ] SPEC-22: Removing gr.Progress() is the right fix (vs CSS hack) | |
| - [ ] Order of implementation makes sense | |
| - [ ] Nothing critical is missing from these specs | |
| --- | |
| ## After Implementation | |
| Once all specs are implemented: | |
| 1. Archive old docs: | |
| - `docs/bugs/p2-hardening-issues.md` β Mark as RESOLVED | |
| - `docs/architecture/adr-001-middleware-refactor.md` β Delete or archive | |
| - `docs/bugs/p3-progress-bar-positioning.md` β Mark as RESOLVED | |
| 2. Update `docs/bugs/active-bugs.md` to reflect completed fixes | |
| 3. Consider v0.2.0 release with these fixes | |