docs: create roadmap (4 phases)

This commit is contained in:
2026-03-24 22:43:51 +01:00
parent 4e4bc6ce0f
commit 012791cb6f
4 changed files with 290 additions and 19 deletions
+19 -19
View File
@@ -66,28 +66,28 @@ Which phases cover which requirements. Updated during roadmap creation.
| Requirement | Phase | Status |
|-------------|-------|--------|
| CAPT-01 | | Pending |
| CAPT-02 | | Pending |
| CAPT-03 | | Pending |
| CAPT-04 | | Pending |
| CAPT-05 | | Pending |
| CAPT-06 | | Pending |
| CLAS-01 | | Pending |
| CLAS-02 | | Pending |
| CLAS-03 | | Pending |
| CLAS-04 | | Pending |
| SYNTH-01 | | Pending |
| SYNTH-02 | | Pending |
| SYNTH-03 | | Pending |
| OUT-01 | | Pending |
| OUT-02 | | Pending |
| OUT-03 | | Pending |
| CAPT-01 | Phase 1 | Pending |
| CAPT-02 | Phase 1 | Pending |
| CAPT-03 | Phase 3 | Pending |
| CAPT-04 | Phase 1 | Pending |
| CAPT-05 | Phase 4 | Pending |
| CAPT-06 | Phase 4 | Pending |
| CLAS-01 | Phase 1 | Pending |
| CLAS-02 | Phase 3 | Pending |
| CLAS-03 | Phase 1 | Pending |
| CLAS-04 | Phase 1 | Pending |
| SYNTH-01 | Phase 2 | Pending |
| SYNTH-02 | Phase 2 | Pending |
| SYNTH-03 | Phase 2 | Pending |
| OUT-01 | Phase 2 | Pending |
| OUT-02 | Phase 2 | Pending |
| OUT-03 | Phase 2 | Pending |
**Coverage:**
- v1 requirements: 16 total
- Mapped to phases: 0
- Unmapped: 16 ⚠️
- Mapped to phases: 16
- Unmapped: 0
---
*Requirements defined: 2026-03-24*
*Last updated: 2026-03-24 after initial definition*
*Last updated: 2026-03-24 after roadmap creation*
+77
View File
@@ -0,0 +1,77 @@
# Roadmap: NetSynth
## Overview
NetSynth is built in four phases ordered by technical risk. Phase 1 validates the hardest foundation: live packet capture and protocol classification without any audio code. Phase 2 builds the synthesis and encoding engine in isolation against synthetic inputs, resolving audio-specific pitfalls before integration. Phase 3 wires the two pipelines together with coordinated Ctrl+C shutdown and auto-clustering, delivering the complete v1 MVP. Phase 4 adds power-user features (BPF filter, offline pcap input) that extend the core without blocking it.
## Phases
**Phase Numbering:**
- Integer phases (1, 2, 3): Planned milestone work
- Decimal phases (2.1, 2.2): Urgent insertions (marked with INSERTED)
Decimal phases appear between their surrounding integers in numeric order.
- [ ] **Phase 1: Capture and Classification** - Live packet capture, protocol identification, and CLI scaffolding — no audio yet
- [ ] **Phase 2: Audio Synthesis Engine** - Oscillators, EMA amplitude smoothing, mixing, and MP3 encoding against synthetic inputs
- [ ] **Phase 3: Pipeline Integration and MVP** - Wire capture into synthesis, Ctrl+C with valid MP3 output, auto-clustering of unknown traffic
- [ ] **Phase 4: Power User Features** - BPF capture filter, offline pcap file input
## Phase Details
### Phase 1: Capture and Classification
**Goal**: Users can run the CLI against a live interface and see a live protocol classification summary — the full capture-to-classify pipeline validated without audio
**Depends on**: Nothing (first phase)
**Requirements**: CAPT-01, CAPT-02, CAPT-04, CLAS-01, CLAS-03, CLAS-04
**Success Criteria** (what must be TRUE):
1. User can run `netsynth -i eth0` and see packets being classified live to stderr
2. User can run `netsynth --list-interfaces` and see all available network interfaces listed
3. User running without root/CAP_NET_RAW sees a clear error message with a `sudo` hint — not a panic or silent failure
4. On exit, user sees a per-protocol packet count summary printed to stderr
5. User can pass `--verbose` and see per-window protocol activity lines on stderr
**Plans**: TBD
### Phase 2: Audio Synthesis Engine
**Goal**: The synthesis and encoding stack produces a valid MP3 from synthetic WindowSnapshot inputs — audio pipeline fully validated before any real traffic flows through it
**Depends on**: Phase 1
**Requirements**: SYNTH-01, SYNTH-02, SYNTH-03, OUT-01, OUT-02, OUT-03
**Success Criteria** (what must be TRUE):
1. Given synthetic traffic snapshots, the tool produces an MP3 file that passes `ffprobe` validation
2. Each traffic class (ICMP, DNS, TCP/443, TCP/other, UDP, SSH) produces a perceptually distinct drone tone
3. Drone layer amplitude rises and falls with traffic volume over time — sustained traffic sounds louder, quiet periods fade
4. User can specify output path via `-o` flag; it defaults to `netsynth-<timestamp>.mp3` when omitted
5. An empty (zero-packet) input produces a clear error message instead of a corrupt or zero-byte MP3
**Plans**: TBD
**UI hint**: no
### Phase 3: Pipeline Integration and MVP
**Goal**: Live capture flows end-to-end into audio synthesis — the complete v1 MVP: run, capture, Ctrl+C, get an MP3
**Depends on**: Phase 2
**Requirements**: CAPT-03, CLAS-02
**Success Criteria** (what must be TRUE):
1. User runs `netsynth -i eth0 -o out.mp3`, generates traffic, presses Ctrl+C, and receives a valid playable MP3 at `out.mp3`
2. Unrecognized traffic patterns are automatically assigned distinct drone tones — unknown traffic is not silent or merged into a single undifferentiated layer
3. The MP3 audio reflects the actual traffic mix — a session with mostly DNS sounds different from one with mostly HTTPS
**Plans**: TBD
### Phase 4: Power User Features
**Goal**: Users can scope capture with BPF expressions and sonify historical pcap files
**Depends on**: Phase 3
**Requirements**: CAPT-05, CAPT-06
**Success Criteria** (what must be TRUE):
1. User can run `netsynth -i eth0 --filter "port 53"` and only DNS traffic is captured and sonified
2. User can run `netsynth --read capture.pcap -o out.mp3` against an existing pcap file and receive a valid MP3
3. An invalid BPF filter expression produces a clear error message before any capture begins
**Plans**: TBD
## Progress
**Execution Order:**
Phases execute in numeric order: 1 → 2 → 3 → 4
| Phase | Plans Complete | Status | Completed |
|-------|----------------|--------|-----------|
| 1. Capture and Classification | 0/? | Not started | - |
| 2. Audio Synthesis Engine | 0/? | Not started | - |
| 3. Pipeline Integration and MVP | 0/? | Not started | - |
| 4. Power User Features | 0/? | Not started | - |
+65
View File
@@ -0,0 +1,65 @@
# Project State
## Project Reference
See: .planning/PROJECT.md (updated 2026-03-24)
**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.
**Current focus:** Phase 1 — Capture and Classification
## Current Position
Phase: 1 of 4 (Capture and Classification)
Plan: 0 of ? in current phase
Status: Ready to plan
Last activity: 2026-03-24 — Roadmap created, ready to plan Phase 1
Progress: [░░░░░░░░░░] 0%
## Performance Metrics
**Velocity:**
- Total plans completed: 0
- Average duration: —
- Total execution time: —
**By Phase:**
| Phase | Plans | Total | Avg/Plan |
|-------|-------|-------|----------|
| - | - | - | - |
**Recent Trend:**
- Last 5 plans: —
- Trend: —
*Updated after each plan completion*
## Accumulated Context
### Decisions
Decisions are logged in PROJECT.md Key Decisions table.
Recent decisions affecting current work:
- Use `github.com/gopacket/gopacket` v1.5.0 (community fork) — NOT `google/gopacket` which is unmaintained
- Use `github.com/packetcap/go-pcap` for live capture (pure Go, no CGo for capture layer)
- Use `github.com/sjzar/go-lame` v0.0.9 for MP3 encoding (embeds LAME C source, CGo required at build time only)
- Audio synthesis: hand-rolled additive sine oscillators + EMA amplitude smoothing (no external audio library)
- Frequency table: register-separated harmonics (low drones = bulk traffic, mid = control, high = interactive)
### Pending Todos
None yet.
### Blockers/Concerns
- Phase 2: Frequency mapping requires subjective listening validation — specific Hz values not determined by research; must test during Phase 2
- Phase 3: Auto-clustering algorithm choice (hash-bucketing vs k-means) deferred until synthesis engine exists to evaluate perceptual results
- macOS privilege model (BPF device vs CAP_NET_RAW) not verified by research — flag if macOS is a target during Phase 1
## Session Continuity
Last session: 2026-03-24
Stopped at: Roadmap written, REQUIREMENTS.md traceability updated — next step is /gsd:plan-phase 1
Resume file: None