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
..
2026-08-23 00:32:27 -07:00
2026-08-22 23:13:42 -07:00
2026-08-22 23:13:42 -07:00
2026-08-26 13:55:37 -07:00
2026-08-23 09:42:09 -07:00
2026-08-27 12:54:50 -07:00
2026-08-22 23:13:42 -07:00
2026-08-27 20:36:57 -07:00
2026-08-22 23:13:42 -07:00
2026-08-22 23:13:42 -07:00
2026-08-22 23:13:42 -07:00
2026-08-22 23:13:42 -07:00
2026-08-22 23:13:42 -07:00
2026-08-22 23:13:42 -07:00
2026-08-23 16:33:34 -07:00
2026-08-27 12:29:23 -07:00
2026-08-27 12:29:23 -07:00
2026-08-22 23:13:42 -07:00
2026-08-22 23:13:42 -07:00
2026-08-23 00:32:27 -07:00
2026-08-22 23:13:42 -07:00
2026-08-23 17:19:42 -07:00
2026-08-22 23:13:42 -07:00
2026-08-27 20:48:37 -07:00
2026-08-24 01:37:16 +00:00
2026-08-22 23:13:42 -07:00
2026-08-23 17:19:42 -07:00
2026-08-22 23:13:42 -07:00
2026-08-23 17:19:42 -07:00
2026-08-22 23:13:42 -07:00
2026-08-23 17:19:42 -07:00
2026-08-22 23:13:42 -07:00
2026-08-26 13:35:50 -07:00
2026-08-27 20:54:43 -07:00
2026-08-24 01:45:47 +00:00
2026-08-28 07:46:36 -07:00
2026-08-26 13:50:22 -07:00
2026-08-23 17:19:42 -07:00
2026-08-28 08:08:55 -07:00
2026-08-22 23:13:42 -07:00
2026-08-27 21:35:07 -07:00
2026-08-22 23:13:42 -07:00