diff --git a/.planning/REQUIREMENTS.md b/.planning/REQUIREMENTS.md new file mode 100644 index 0000000..3aeba5b --- /dev/null +++ b/.planning/REQUIREMENTS.md @@ -0,0 +1,96 @@ +# Requirements: NetSynth + +**Defined:** 2026-03-27 +**Core Value:** Network traffic patterns are instantly recognizable as distinct sounds — a ping sounds different from HTTPS noise, which sounds different from a port scan. + +## v1.2 Requirements + +Requirements for extended protocol coverage milestone. Each maps to roadmap phases. + +### Cleanup + +- [ ] **CLEAN-01**: Remove stale `NumLayers` constant and hardcoded frequency range test assertions that would block new class additions + +### Protocol Coverage + +- [ ] **PROTO-01**: Add Mail family protocols: IMAP (143/993), POP3 (110/995), SMTP-submission (587) +- [ ] **PROTO-02**: Add File Transfer family protocols: FTP (20-21), SMB/CIFS (445), TFTP (69) +- [ ] **PROTO-03**: Add Remote Access family protocols: RDP (3389), Telnet (23), VNC (5900) +- [ ] **PROTO-04**: Add Database family protocols: MySQL (3306), PostgreSQL (5432), Redis (6379), MongoDB (27017) +- [ ] **PROTO-05**: Add Discovery family protocols: mDNS (5353), SSDP/UPnP (1900), SNMP (161-162) +- [ ] **PROTO-06**: Add VoIP family: SIP (5060/5061) +- [ ] **PROTO-07**: Add Web family extension: QUIC/HTTP3 (UDP 443) +- [ ] **PROTO-08**: Add Infrastructure family protocols: LDAP (389/636), Kerberos (88), Syslog (514) +- [ ] **PROTO-09**: Existing 10 protocol classifications remain unchanged — no regression in rule matching behavior + +### Frequency Design + +- [ ] **FREQ-01**: All traffic classes (existing + new) are redistributed into group-coherent frequency bands using musical interval ratios (not fixed Hz steps) +- [ ] **FREQ-02**: Within-family protocols are separated by at least a major second interval (ratio 1.122) to avoid critical band masking +- [ ] **FREQ-03**: The full frequency allocation table is designed and documented before any FreqConfig code is written +- [ ] **FREQ-04**: Auto-assign frequency range for user custom classes is updated to avoid collision with new built-in frequencies + +### Group System + +- [ ] **GRP-01**: Each traffic class belongs to a named group (Infrastructure, Web, Mail, File Transfer, Remote Access, Database, Discovery, VoIP) +- [ ] **GRP-02**: `--print-config` output organizes classes by group with section headers +- [ ] **GRP-03**: Users can define `[groups]` in TOML config to reassign protocols to different sound families +- [ ] **GRP-04**: FreqConfig gains a `Group` field that drives group-aware frequency allocation and config output + +## Future Requirements + +Deferred to later releases. + +### Dynamic Protocol Detection + +- **DYN-01**: RTP voice/video payload detection (dynamically negotiated ports — cannot use port-based rules) +- **DYN-02**: Application-layer protocol detection via DPI for ambiguous ports + +### Audio Tuning + +- **TUNE-01**: User can configure time window duration via `--window` flag +- **TUNE-02**: User can configure output duration when reading pcap files via `--duration` flag + +## Out of Scope + +| Feature | Reason | +|---------|--------| +| RTP payload detection | Dynamically negotiated ports; needs DPI, not port rules | +| mDNS multicast group join | Would require raw socket changes; port 5353 classification is sufficient | +| Protocol-specific metadata extraction | Beyond classification scope; tool sonifies, not inspects | +| Real-time audio playback | File output only — established v1.0 constraint | +| GUI config editor | CLI-only tool; TOML is human-editable | + +## Traceability + +Which phases cover which requirements. Updated during roadmap creation. + +| Requirement | Phase | Status | +|-------------|-------|--------| +| CLEAN-01 | TBD | Pending | +| PROTO-01 | TBD | Pending | +| PROTO-02 | TBD | Pending | +| PROTO-03 | TBD | Pending | +| PROTO-04 | TBD | Pending | +| PROTO-05 | TBD | Pending | +| PROTO-06 | TBD | Pending | +| PROTO-07 | TBD | Pending | +| PROTO-08 | TBD | Pending | +| PROTO-09 | TBD | Pending | +| FREQ-01 | TBD | Pending | +| FREQ-02 | TBD | Pending | +| FREQ-03 | TBD | Pending | +| FREQ-04 | TBD | Pending | +| GRP-01 | TBD | Pending | +| GRP-02 | TBD | Pending | +| GRP-03 | TBD | Pending | +| GRP-04 | TBD | Pending | + +**Coverage:** +- v1.2 requirements: 18 total +- Mapped to phases: 0 (pending roadmap) +- Unmapped: 18 + +--- +*Requirements defined: 2026-03-27* +*Last updated: 2026-03-27*