docs: define v1 requirements

33 requirements across 9 categories:
- Message detection & translation (6)
- Teaching system (7)
- Unknown emoji handling (3)
- Error handling (3)
- Configuration (2)
- Database (4)
- Accessibility (5)
- Generalization (3)

All v1 requirements mapped to phases 1-5.
This commit is contained in:
Dani B
2026-01-29 11:05:42 -05:00
parent 901574f8c8
commit 61eb9f960a

174
.planning/REQUIREMENTS.md Normal file
View File

@@ -0,0 +1,174 @@
# Requirements: Vivi Speech Translator
**Defined:** 2025-01-29
**Core Value:** Vivi posts emojis and others instantly understand her without needing to know what each emoji means.
## v1 Requirements
Requirements for initial release. Each maps to roadmap phases.
### Message Detection
- [ ] **DETECT-01**: Bot detects when Vivi is communicating via PluralKit webhook proxying
- [ ] **DETECT-02**: Bot ignores non-Vivi messages (no false positives on other members/bots)
- [ ] **DETECT-03**: Bot works in Discord channels and direct messages (DMs)
- [ ] **DETECT-04**: Bot detects Vivi's messages reliably even after edits or reactions
### Emoji Parsing & Translation
- [ ] **TRANS-01**: Bot parses standard emojis (😷, ❌, 2⃣) from Vivi's messages
- [ ] **TRANS-02**: Bot parses custom Discord server emojis (`:me1:`, `:custom_name:`) from Vivi's messages
- [ ] **TRANS-03**: Bot translates parsed emojis to text and replies automatically (auto mode)
- [ ] **TRANS-04**: Bot composition reads emojis left-to-right and composes natural language translation
- [ ] **TRANS-05**: Bot replies with plain text translation (never emoji-only responses)
- [ ] **TRANS-06**: Bot's response is concise and clear (respects message length limits)
### Teaching System
- [ ] **TEACH-01**: `/teach emoji "meaning"` command allows users to teach new emoji meanings
- [ ] **TEACH-02**: Bot confirms what it learned (shows emoji and meaning back to user)
- [ ] **TEACH-03**: Bot stores emoji meanings globally across all Discord servers
- [ ] **TEACH-04**: `/meaning emoji` command shows the current meaning of an emoji
- [ ] **TEACH-05**: `/correct emoji "new meaning"` command updates incorrect emoji meanings
- [ ] **TEACH-06**: Audit trail tracks who taught/corrected each emoji and when
- [ ] **TEACH-07**: Any user can teach emojis (not restricted to Vivi or admins)
### Unknown Emoji Handling
- [ ] **UNK-01**: When bot encounters unknown emoji, it skips that emoji
- [ ] **UNK-02**: Bot shows translation of known emojis and prompts user to teach unknown ones
- [ ] **UNK-03**: Teaching prompt is accessible (simple command: `/teach emoji "meaning"`)
### Error Handling
- [ ] **ERROR-01**: When bot encounters an error, it reacts with ❌ instead of crashing
- [ ] **ERROR-02**: Bot logs errors for debugging (no message to user)
- [ ] **ERROR-03**: Bot retries failed database operations (exponential backoff)
### Configuration
- [ ] **CONFIG-01**: `/config auto-translate on|off` command toggles automatic translation per server
- [ ] **CONFIG-02**: Default mode is auto (bot translates every Vivi message)
- [ ] **CONFIG-03**: Setting is per-server (each Discord server has its own preference)
- [ ] **CONFIG-04**: Only server admins can change configuration
### Database & Persistence
- [ ] **DB-01**: Global emoji dictionary persists across bot restarts
- [ ] **DB-02**: Emoji meanings shared across all Discord servers (one dictionary)
- [ ] **DB-03**: Per-server configuration persists (auto/on-demand toggle)
- [ ] **DB-04**: Audit trail of teaching actions stored with user ID and timestamp
### Accessibility
- [ ] **A11Y-01**: All bot responses are plain text (no heavy formatting or embeds)
- [ ] **A11Y-02**: `/teach emoji "meaning"` command is simple and short
- [ ] **A11Y-03**: Bot responses are concise (under 3 sentences)
- [ ] **A11Y-04**: Slash commands are used (better keyboard navigation than buttons)
- [ ] **A11Y-05**: Emoji names included in responses for screen readers
### Generalization & Multi-System
- [ ] **GEN-01**: Architecture supports adding other plural systems in future (not Vivi-only hardcoded)
- [ ] **GEN-02**: Emoji dictionary design allows per-system or per-guild overrides (for future v2)
- [ ] **GEN-01**: Code is modular enough for other systems to fork and customize
## v2 Requirements
Deferred to future release. Tracked but not in current roadmap.
### On-Demand Translation
- **DEMAND-01**: Users can react with 🔤 to request translation (on-demand mode)
- **DEMAND-02**: `/translate message_id` command translates a specific Vivi message
### Advanced Configuration
- **CONFIG-05**: Per-server custom emoji overrides (e.g., server A uses 😊 for "happy", server B uses it for "embarrassed")
- **CONFIG-06**: Per-server emoji moderation (block certain emojis from being taught)
### Analytics & Admin
- **STATS-01**: `/stats` shows frequently-translated emojis per server
- **STATS-02**: `/emoji-list` shows all known emoji meanings with teaching source
- **ADMIN-01**: Server admins can reset emoji meanings to defaults
- **ADMIN-02**: Bot owner can view global statistics (all servers)
### Translation Quality
- **QUALITY-01**: Reaction-based feedback (👍/👎) on translations
- **QUALITY-02**: Bot improves formatting based on feedback patterns
### Multi-Language
- **MULTI-01**: Emoji meanings in multiple languages (future expansion)
## Out of Scope
Explicitly excluded. Documented to prevent scope creep.
| Feature | Reason |
|---------|--------|
| Real-time chat simulation | Out of scope — this is translation only, not a messaging system |
| Cross-Discord emoji translation | Potential conflicts; focus on Vivi's system meanings only |
| Context-aware inference | Explicit teaching required — meanings don't infer from conversation context |
| Voice/audio output | Translation to text only — no text-to-speech |
| Mobile app | Discord bot only — no standalone app |
| ML-based emoji sentiment | Rule-based only for v1; statistical fallback deferred to future |
| Custom emoji creation | Bot translates existing emojis; doesn't create new ones |
| Message history scanning | Only translates new messages; doesn't retroactively translate old ones |
## Traceability
Which phases cover which requirements. Updated during roadmap creation.
| Requirement | Phase | Status |
|-------------|-------|--------|
| DETECT-01 | Phase 1 | Pending |
| DETECT-02 | Phase 1 | Pending |
| DETECT-03 | Phase 1 | Pending |
| DETECT-04 | Phase 2 | Pending |
| TRANS-01 | Phase 2 | Pending |
| TRANS-02 | Phase 2 | Pending |
| TRANS-03 | Phase 2 | Pending |
| TRANS-04 | Phase 2 | Pending |
| TRANS-05 | Phase 2 | Pending |
| TRANS-06 | Phase 2 | Pending |
| TEACH-01 | Phase 3 | Pending |
| TEACH-02 | Phase 3 | Pending |
| TEACH-03 | Phase 3 | Pending |
| TEACH-04 | Phase 3 | Pending |
| TEACH-05 | Phase 3 | Pending |
| TEACH-06 | Phase 3 | Pending |
| TEACH-07 | Phase 3 | Pending |
| UNK-01 | Phase 2 | Pending |
| UNK-02 | Phase 3 | Pending |
| UNK-03 | Phase 3 | Pending |
| ERROR-01 | Phase 2 | Pending |
| ERROR-02 | Phase 5 | Pending |
| ERROR-03 | Phase 5 | Pending |
| CONFIG-01 | Phase 4 | Pending |
| CONFIG-02 | Phase 2 | Pending |
| CONFIG-03 | Phase 4 | Pending |
| CONFIG-04 | Phase 4 | Pending |
| DB-01 | Phase 1 | Pending |
| DB-02 | Phase 2 | Pending |
| DB-03 | Phase 4 | Pending |
| DB-04 | Phase 3 | Pending |
| A11Y-01 | Phase 2 | Pending |
| A11Y-02 | Phase 3 | Pending |
| A11Y-03 | Phase 3 | Pending |
| A11Y-04 | Phase 2 | Pending |
| A11Y-05 | Phase 3 | Pending |
| GEN-01 | Phase 1 | Pending |
| GEN-02 | Phase 4 | Pending |
| GEN-03 | Phase 3 | Pending |
**Coverage:**
- v1 requirements: 33 total
- Mapped to phases: 33
- Unmapped: 0 ✓
---
*Requirements defined: 2025-01-29*
*Last updated: 2025-01-29 after initial definition*