Files
yoloyolo/.planning/ROADMAP.md
T
gurix 3eebb0f590 docs(07-02): complete print-config and LoadResult wiring plan
- SUMMARY.md for plan 02: PrintConfig + CLI wiring
- STATE.md: updated progress (100%), metrics, decisions, session
- ROADMAP.md: Phase 7 marked Complete (2/2 summaries)
- REQUIREMENTS.md: CFG-06 marked complete
2026-03-26 21:52:44 +01:00

5.3 KiB

Roadmap: NetSynth

Milestones

  • v1.0 MVP — Phases 1-4 (shipped 2026-03-26)
  • v1.1 Custom Sound Mappings — Phases 5-7 (in progress)

Phases

v1.0 MVP (Phases 1-4) — SHIPPED 2026-03-26
  • Phase 1: Capture and Classification - 4/4 plans — completed 2026-03-25
  • Phase 2: Audio Synthesis Engine - 3/3 plans — completed 2026-03-26
  • Phase 3: Pipeline Integration and MVP - 2/2 plans — completed 2026-03-26
  • Phase 4: Power User Features - 2/2 plans — completed 2026-03-26

Full details: .planning/milestones/v1.0-ROADMAP.md

v1.1 Custom Sound Mappings (In Progress)

Milestone Goal: Users can customize how traffic sounds via a TOML config file — setting custom frequencies, waveform types, and their own classification rules with named sounds.

  • Phase 5: Waveform Types and Bank Decoupling - Internal refactors establishing waveform enum and injectable bank signature (completed 2026-03-26)
  • Phase 6: Config Package and Sound Overrides - TOML loading, auto-discovery, partial merge, and frequency/waveform overrides wired end-to-end (completed 2026-03-26)
  • Phase 7: Custom Rules and Print-Config - User-defined classification rules and --print-config UX (completed 2026-03-26)

Phase Details

Phase 5: Waveform Types and Bank Decoupling

Goal: Four waveform types are available per traffic class, and the synthesis bank accepts an injected config map instead of reading global state Depends on: Phase 4 Requirements: WAVE-01, WAVE-02 Success Criteria (what must be TRUE):

  1. User can set a traffic class to square, sawtooth, or triangle waveform and hear a tonally distinct sound with no audible aliasing or buzzing artifacts
  2. Sine waveform continues to produce the same output as v1.0 — no regression
  3. The synthesis bank builds layers from a passed-in config map rather than a hardcoded class list Plans: 2/2 plans complete

Plans:

  • 05-01-PLAN.md — Waveform types: WaveformType enum, WaveformPresetHarmonics, NewLayer resolution
  • 05-02-PLAN.md — Bank decoupling: NewBank injected config map, dynamic GainPerLayer, test updates

Phase 6: Config Package and Sound Overrides

Goal: Users can create a TOML config file to override frequency and waveform per traffic class, with auto-discovery, partial override semantics, and clear validation errors Depends on: Phase 5 Requirements: CFG-01, CFG-02, CFG-03, CFG-04, CFG-05 Success Criteria (what must be TRUE):

  1. User creates a netsynth.toml in the working directory with a custom Hz value and the tool uses that frequency for the specified class without touching other classes
  2. User runs the tool with no flags in a directory without a config file — it starts silently (no warning about missing config)
  3. User passes --config /path/to/custom.toml and the tool uses that file; if the file does not exist, the tool exits with a clear error before capture begins
  4. User types frequncy = 440 in their config file and the tool exits at startup with an error naming frequncy as an unrecognized key
  5. User sets waveform for one class in TOML and leaves all other classes at their defaults — the unspecified classes are unchanged Plans: 2/2 plans complete

Plans:

  • 06-01-PLAN.md — Config package: TOML load, validate, merge with TDD (config/config.go, config/config_test.go)
  • 06-02-PLAN.md — CLI wiring: --config flag, RunSynthesis signature change, main.go integration

Phase 7: Custom Rules and Print-Config

Goal: Users can define their own traffic classification rules in TOML, assign custom sounds to them, and inspect the full effective config before capture begins Depends on: Phase 6 Requirements: RULE-01, RULE-02, RULE-03, CFG-06 Success Criteria (what must be TRUE):

  1. User adds a [[rules]] block in TOML matching a custom port/protocol combination and hears a distinct tone for that traffic in the output MP3
  2. User-defined rules fire before built-in protocol rules — a custom rule for port 443 overrides the default HTTPS classification for packets on that port
  3. A user-defined class name gets its own synthesis layer automatically — no silence or missing audio for traffic matched by a custom rule
  4. User runs netsynth --print-config and sees the full effective config (defaults merged with their overrides) as commented TOML, without starting a capture Plans: 2/2 plans complete

Plans:

  • 07-01-PLAN.md — Config extension: RawRule, LoadResult, rule validation, auto-freq assignment (TDD)
  • 07-02-PLAN.md — CLI wiring: --print-config flag, user rule prepend, PrintConfig output

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