Story Crater Bot
|
19967d1699
|
feat: implement M3.7.8 symptom projection (250 LOC) + 22 tests (10 unit + 12 integration)
IMPLEMENTATION:
- crates/mem-core/src/symptom_projection.rs (250 LOC)
- project_symptom(tool, query) → SymptomVector
- Three-stage normalization:
- Stage 1: Extract keywords
- Stage 2: Normalize (stop words, abbreviations)
- Stage 3: Generate deterministic SHA256 hash
- Tool-specific abbreviation mappings (npm, cargo, kubectl, docker, go)
- Stop words list (30+ common words)
- Confidence scoring based on keyword specificity
TEST COVERAGE: 22 tests passing
- 10 unit tests in lib (determinism, abbreviations, stop words, tools, case, order)
- 12 integration tests (a1-a6 assertions from design doc)
- Real-world scenario tests (npm, cargo, kubectl)
- 100% deterministic hashing verified
INTEGRATION:
- Module exported in crates/mem-core/src/lib.rs
- All 43 existing mem-core tests still passing
- Ready for M3.7.4 context endpoint integration
DESIGN ASSERTIONS (all passing):
✅ a1: Same symptom = same hash (deterministic)
✅ a2: Abbreviation expansion (ERESOLVE → error resolve)
✅ a3: Stop word removal (is, unable, to, the)
✅ a4: Tool consistency (npm ≠ cargo for same error)
✅ a5: Case insensitive (NPM = npm)
✅ a6: Keyword order irrelevant (sorted before hash)
|
2026-08-28 08:08:55 -07:00 |
|