35 traffic classes across 9 protocol families shipped. Archives ROADMAP, REQUIREMENTS, and phase directories to milestones/v1.2-*. Updates README with new protocol families, sound design table, and [groups] TOML config documentation. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
114 lines
7.1 KiB
Markdown
114 lines
7.1 KiB
Markdown
# Roadmap: NetSynth
|
|
|
|
## Milestones
|
|
|
|
- **v1.0 MVP** — Phases 1-4 (shipped 2026-03-26)
|
|
- **v1.1 Custom Sound Mappings** — Phases 5-7 (shipped 2026-03-26)
|
|
- **v1.2 Extended Protocol Coverage** — Phases 8-11 (in progress)
|
|
|
|
## Phases
|
|
|
|
<details>
|
|
<summary>v1.0 MVP (Phases 1-4) — SHIPPED 2026-03-26</summary>
|
|
|
|
- [x] **Phase 1: Capture and Classification** - 4/4 plans — completed 2026-03-25
|
|
- [x] **Phase 2: Audio Synthesis Engine** - 3/3 plans — completed 2026-03-26
|
|
- [x] **Phase 3: Pipeline Integration and MVP** - 2/2 plans — completed 2026-03-26
|
|
- [x] **Phase 4: Power User Features** - 2/2 plans — completed 2026-03-26
|
|
|
|
Full details: `.planning/milestones/v1.0-ROADMAP.md`
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary>v1.1 Custom Sound Mappings (Phases 5-7) — SHIPPED 2026-03-26</summary>
|
|
|
|
- [x] **Phase 5: Waveform Types and Bank Decoupling** - 2/2 plans — completed 2026-03-26
|
|
- [x] **Phase 6: Config Package and Sound Overrides** - 2/2 plans — completed 2026-03-26
|
|
- [x] **Phase 7: Custom Rules and Print-Config** - 2/2 plans — completed 2026-03-26
|
|
|
|
Full details: `.planning/milestones/v1.1-ROADMAP.md`
|
|
|
|
</details>
|
|
|
|
### v1.2 Extended Protocol Coverage (In Progress)
|
|
|
|
**Milestone Goal:** Expand traffic classification with grouped protocol families that share recognizable sound signatures — from 14 classes to ~35, organized into frequency bands by family.
|
|
|
|
- [x] **Phase 8: Test and Constant Cleanup** - 1 plan — Remove stale constants and update test bounds that would block all subsequent v1.2 work (completed 2026-03-27)
|
|
- [ ] **Phase 9: Frequency Design and Group Architecture** - 2 plans — Design complete Hz allocation for all ~35 classes in family bands and add Group field to FreqConfig
|
|
- [x] **Phase 10: Classification Layer** - 2 plans — Add 21 new TrafficClass constants, 30 port rules, and test coverage for all new protocol families (completed 2026-03-27)
|
|
- [x] **Phase 11: Synthesis and Config Layer** - Add ClassFreqConfigs entries for all new classes, update auto-assign range, and add group-header output to --print-config (completed 2026-03-27)
|
|
|
|
## Phase Details
|
|
|
|
### Phase 8: Test and Constant Cleanup
|
|
**Goal**: Pre-existing test assertions and a stale exported constant that would block or mislead all subsequent v1.2 work are removed
|
|
**Depends on**: Phase 7
|
|
**Requirements**: CLEAN-01
|
|
**Success Criteria** (what must be TRUE):
|
|
1. `go test ./...` passes on main with no modifications to the new v1.2 code path
|
|
2. The stale `NumLayers`/`GainPerLayer` exported constant no longer exists in the synth package — callers cannot accidentally use it
|
|
3. `TestFrequenciesInRange` accepts the new extended Hz range without manual test surgery when new classes are added in Phase 10
|
|
**Plans:** 1/1 plans complete
|
|
Plans:
|
|
- [x] 08-01-PLAN.md — Delete stale constants, future-proof test bounds, rename/consolidate tests
|
|
|
|
### Phase 9: Frequency Design and Group Architecture
|
|
**Goal**: A complete, documented frequency allocation table for all ~35 traffic classes exists and the FreqConfig struct carries a Group field — design decisions are locked in before any protocol code is written
|
|
**Depends on**: Phase 8
|
|
**Requirements**: FREQ-01, FREQ-02, FREQ-03, FREQ-04, GRP-01, GRP-04
|
|
**Success Criteria** (what must be TRUE):
|
|
1. A written frequency allocation table (in a planning doc or code comment) lists every built-in class, its Hz value, waveform, and group — no class is TBD
|
|
2. Every within-family pair of frequencies satisfies at least a major second interval (ratio 1.122), verifiable by inspection of the table
|
|
3. The `autoAssignFreq` base for user-defined custom classes is set above all built-in frequencies, with no collision possible
|
|
4. `FreqConfig` has a `Group` string field and all existing `ClassFreqConfigs` entries compile with the new struct shape
|
|
**Plans:** 1/2 plans executed
|
|
Plans:
|
|
- [ ] 09-01-PLAN.md — Add Group field to FreqConfig, rebalance ClassFreqConfigs to major-second ladder
|
|
- [x] 09-02-PLAN.md — Update auto-assign range from [1200,2350] to [2500,4000] Hz
|
|
|
|
### Phase 10: Classification Layer
|
|
**Goal**: All new protocol families are classified — ~21 new TrafficClass constants exist, AllClasses() covers them, and DefaultRules maps all new ports to their classes
|
|
**Depends on**: Phase 9
|
|
**Requirements**: PROTO-01, PROTO-02, PROTO-03, PROTO-04, PROTO-05, PROTO-06, PROTO-07, PROTO-08, PROTO-09
|
|
**Success Criteria** (what must be TRUE):
|
|
1. A packet arriving on any new protocol port (e.g., TCP 143, TCP 3389, TCP 3306, UDP 5353, TCP 5060) is classified into the correct named TrafficClass, not into other-TCP or other-UDP
|
|
2. All existing 10 protocol classifications continue to match as before — no regression in rule order or port assignments
|
|
3. Multiple ports mapping to the same family class (e.g., IMAP port 143 and IMAPS port 993 both classify as the same Mail-IMAP class) behave identically in the classifier output
|
|
4. `go test ./classify/...` passes with no new test failures
|
|
**Plans:** 2/2 plans complete
|
|
Plans:
|
|
- [x] 10-01-PLAN.md — Add 21 TrafficClass constants and 30 port-matching rules
|
|
- [x] 10-02-PLAN.md — Add 28 classification subtests and update TestAllClassesCount
|
|
|
|
### Phase 11: Synthesis and Config Layer
|
|
**Goal**: Every new traffic class produces a distinct, family-coherent sound and --print-config shows all classes organized by group with section headers
|
|
**Depends on**: Phase 9, Phase 10
|
|
**Requirements**: GRP-02, GRP-03
|
|
**Success Criteria** (what must be TRUE):
|
|
1. Running `netsynth --print-config` shows all ~35 classes grouped by family with section header comments (e.g., `# Mail`, `# Database`) — no class is listed without a group
|
|
2. A pcap or live capture that triggers Mail traffic produces tones that are audibly in the same timbral family — same waveform type, similar frequency register — while still being distinguishable from each other
|
|
3. Users can define `[groups]` in their TOML config to reassign a protocol to a different sound family, and --print-config reflects the reassignment
|
|
4. `go test ./...` passes and a listening test on a representative pcap confirms family identity is perceptually clear
|
|
**Plans:** 2/2 plans complete
|
|
Plans:
|
|
- [x] 11-01-PLAN.md — Add 21 ClassFreqConfigs entries, update AllClasses() to 35, fix all count tests
|
|
- [x] 11-02-PLAN.md — Refactor PrintConfig for group headers, add [groups] TOML support
|
|
|
|
## Progress
|
|
|
|
| Phase | Milestone | Plans Complete | Status | Completed |
|
|
|-------|-----------|----------------|--------|-----------|
|
|
| 1. Capture and Classification | v1.0 | 4/4 | Complete | 2026-03-25 |
|
|
| 2. Audio Synthesis Engine | v1.0 | 3/3 | Complete | 2026-03-26 |
|
|
| 3. Pipeline Integration and MVP | v1.0 | 2/2 | Complete | 2026-03-26 |
|
|
| 4. Power User Features | v1.0 | 2/2 | Complete | 2026-03-26 |
|
|
| 5. Waveform Types and Bank Decoupling | v1.1 | 2/2 | Complete | 2026-03-26 |
|
|
| 6. Config Package and Sound Overrides | v1.1 | 2/2 | Complete | 2026-03-26 |
|
|
| 7. Custom Rules and Print-Config | v1.1 | 2/2 | Complete | 2026-03-26 |
|
|
| 8. Test and Constant Cleanup | v1.2 | 1/1 | Complete | 2026-03-27 |
|
|
| 9. Frequency Design and Group Architecture | v1.2 | 1/2 | In Progress| |
|
|
| 10. Classification Layer | v1.2 | 2/2 | Complete | 2026-03-27 |
|
|
| 11. Synthesis and Config Layer | v1.2 | 2/2 | Complete | 2026-03-27 |
|