docs: create milestone v1.1 roadmap (3 phases)
This commit is contained in:
+14
-14
@@ -56,23 +56,23 @@ Which phases cover which requirements. Updated during roadmap creation.
|
|||||||
|
|
||||||
| Requirement | Phase | Status |
|
| Requirement | Phase | Status |
|
||||||
|-------------|-------|--------|
|
|-------------|-------|--------|
|
||||||
| CFG-01 | - | Pending |
|
| CFG-01 | Phase 6 | Pending |
|
||||||
| CFG-02 | - | Pending |
|
| CFG-02 | Phase 6 | Pending |
|
||||||
| CFG-03 | - | Pending |
|
| CFG-03 | Phase 6 | Pending |
|
||||||
| CFG-04 | - | Pending |
|
| CFG-04 | Phase 6 | Pending |
|
||||||
| CFG-05 | - | Pending |
|
| CFG-05 | Phase 6 | Pending |
|
||||||
| CFG-06 | - | Pending |
|
| CFG-06 | Phase 7 | Pending |
|
||||||
| WAVE-01 | - | Pending |
|
| WAVE-01 | Phase 5 | Pending |
|
||||||
| WAVE-02 | - | Pending |
|
| WAVE-02 | Phase 5 | Pending |
|
||||||
| RULE-01 | - | Pending |
|
| RULE-01 | Phase 7 | Pending |
|
||||||
| RULE-02 | - | Pending |
|
| RULE-02 | Phase 7 | Pending |
|
||||||
| RULE-03 | - | Pending |
|
| RULE-03 | Phase 7 | Pending |
|
||||||
|
|
||||||
**Coverage:**
|
**Coverage:**
|
||||||
- v1.1 requirements: 11 total
|
- v1.1 requirements: 11 total
|
||||||
- Mapped to phases: 0
|
- Mapped to phases: 11
|
||||||
- Unmapped: 11
|
- Unmapped: 0
|
||||||
|
|
||||||
---
|
---
|
||||||
*Requirements defined: 2026-03-26*
|
*Requirements defined: 2026-03-26*
|
||||||
*Last updated: 2026-03-26 after initial definition*
|
*Last updated: 2026-03-26 after roadmap creation (traceability complete)*
|
||||||
|
|||||||
+51
-4
@@ -3,21 +3,65 @@
|
|||||||
## Milestones
|
## Milestones
|
||||||
|
|
||||||
- **v1.0 MVP** — Phases 1-4 (shipped 2026-03-26)
|
- **v1.0 MVP** — Phases 1-4 (shipped 2026-03-26)
|
||||||
|
- **v1.1 Custom Sound Mappings** — Phases 5-7 (in progress)
|
||||||
|
|
||||||
## Phases
|
## Phases
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>v1.0 MVP (Phases 1-4) — SHIPPED 2026-03-26</summary>
|
<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 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 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 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
|
- [x] **Phase 4: Power User Features** - 2/2 plans — completed 2026-03-26
|
||||||
|
|
||||||
Full details: `.planning/milestones/v1.0-ROADMAP.md`
|
Full details: `.planning/milestones/v1.0-ROADMAP.md`
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
### 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
|
||||||
|
- [ ] **Phase 6: Config Package and Sound Overrides** - TOML loading, auto-discovery, partial merge, and frequency/waveform overrides wired end-to-end
|
||||||
|
- [ ] **Phase 7: Custom Rules and Print-Config** - User-defined classification rules and --print-config UX
|
||||||
|
|
||||||
|
## 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**: TBD
|
||||||
|
|
||||||
|
### 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**: TBD
|
||||||
|
|
||||||
|
### 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**: TBD
|
||||||
|
|
||||||
## Progress
|
## Progress
|
||||||
|
|
||||||
| Phase | Milestone | Plans Complete | Status | Completed |
|
| Phase | Milestone | Plans Complete | Status | Completed |
|
||||||
@@ -26,3 +70,6 @@ Full details: `.planning/milestones/v1.0-ROADMAP.md`
|
|||||||
| 2. Audio Synthesis Engine | v1.0 | 3/3 | Complete | 2026-03-26 |
|
| 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 |
|
| 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 |
|
| 4. Power User Features | v1.0 | 2/2 | Complete | 2026-03-26 |
|
||||||
|
| 5. Waveform Types and Bank Decoupling | v1.1 | 0/? | Not started | - |
|
||||||
|
| 6. Config Package and Sound Overrides | v1.1 | 0/? | Not started | - |
|
||||||
|
| 7. Custom Rules and Print-Config | v1.1 | 0/? | Not started | - |
|
||||||
|
|||||||
+31
-23
@@ -2,11 +2,11 @@
|
|||||||
gsd_state_version: 1.0
|
gsd_state_version: 1.0
|
||||||
milestone: v1.1
|
milestone: v1.1
|
||||||
milestone_name: Custom Sound Mappings
|
milestone_name: Custom Sound Mappings
|
||||||
status: Defining requirements
|
status: Ready to plan
|
||||||
stopped_at: Milestone v1.1 started
|
stopped_at: Roadmap created for v1.1 (Phases 5-7)
|
||||||
last_updated: "2026-03-26T15:00:00.000Z"
|
last_updated: "2026-03-26T15:30:00.000Z"
|
||||||
progress:
|
progress:
|
||||||
total_phases: 0
|
total_phases: 3
|
||||||
completed_phases: 0
|
completed_phases: 0
|
||||||
total_plans: 0
|
total_plans: 0
|
||||||
completed_plans: 0
|
completed_plans: 0
|
||||||
@@ -19,34 +19,42 @@ progress:
|
|||||||
See: .planning/PROJECT.md (updated 2026-03-26)
|
See: .planning/PROJECT.md (updated 2026-03-26)
|
||||||
|
|
||||||
**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.
|
**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:** Milestone v1.1 — Custom Sound Mappings
|
**Current focus:** Milestone v1.1 — Custom Sound Mappings (Phase 5 next)
|
||||||
|
|
||||||
## Current Position
|
## Current Position
|
||||||
|
|
||||||
Phase: Not started (defining requirements)
|
Phase: 5 of 7 (Waveform Types and Bank Decoupling)
|
||||||
Plan: —
|
Plan: —
|
||||||
|
Status: Ready to plan
|
||||||
|
Last activity: 2026-03-26 — v1.1 roadmap created, Phases 5-7 defined
|
||||||
|
|
||||||
|
Progress: [░░░░░░░░░░] 0%
|
||||||
|
|
||||||
## Performance Metrics
|
## Performance Metrics
|
||||||
|
|
||||||
| Phase | Duration | Tasks | Files |
|
**Velocity (v1.0 baseline):**
|
||||||
|-------|----------|-------|-------|
|
- Total plans completed: 11
|
||||||
| Phase 01 P01 | 4min | 2 tasks | 6 files |
|
- Average duration: 7.7 min
|
||||||
| Phase 01 P02 | 3min | 1 tasks | 4 files |
|
- Total execution time: ~1.4 hours
|
||||||
| Phase 01 P03 | 8min | 2 tasks | 4 files |
|
|
||||||
| Phase 01 P04 | 15min | 2 tasks | 2 files |
|
**By Phase (v1.0):**
|
||||||
| Phase 02 P01 | 15min | 2 tasks | 8 files |
|
|
||||||
| Phase 02 P02 | 10min | 2 tasks | 4 files |
|
| Phase | Plans | Total | Avg/Plan |
|
||||||
| Phase 02 P03 | 3min | 2 tasks | 3 files |
|
|-------|-------|-------|----------|
|
||||||
| Phase 03 P01 | 15min | 2 tasks | 6 files |
|
| 01 | 4 | ~30min | 7.5min |
|
||||||
| Phase 03 P02 | 5min | 1 tasks | 1 files |
|
| 02 | 3 | ~28min | 9.3min |
|
||||||
| Phase 04 P01 | 3min | 2 tasks | 9 files |
|
| 03 | 2 | ~20min | 10min |
|
||||||
| Phase 04 P02 | 4min | 1 tasks | 2 files |
|
| 04 | 2 | ~7min | 3.5min |
|
||||||
|
|
||||||
|
**Recent Trend:** Stable
|
||||||
|
|
||||||
## Accumulated Context
|
## Accumulated Context
|
||||||
|
|
||||||
### Decisions
|
### Decisions
|
||||||
|
|
||||||
All decisions archived in PROJECT.md Key Decisions table and `.planning/milestones/v1.0-ROADMAP.md`.
|
- [v1.1 Roadmap]: Phase 5 consolidates waveform types (WAVE-01, WAVE-02) with bank decoupling — both are internal refactors with no user-visible surface, establishing the injectable seam before config is added
|
||||||
|
- [v1.1 Roadmap]: Research steps 5+6 (wire config + freq/waveform overrides) collapsed into Phase 6 — they share the same integration boundary (encode.RunSynthesis signature change) and are safer to land together
|
||||||
|
- [v1.1 Roadmap]: User class name collision with built-in TrafficClass strings is an unresolved design question — decide before coding Phase 7 (treat as override vs. reject as ambiguous)
|
||||||
|
|
||||||
### Pending Todos
|
### Pending Todos
|
||||||
|
|
||||||
@@ -54,10 +62,10 @@ None.
|
|||||||
|
|
||||||
### Blockers/Concerns
|
### Blockers/Concerns
|
||||||
|
|
||||||
None — all v1.0 blockers resolved.
|
- [Phase 7 pre-work]: User-defined class names that collide with built-in class strings (e.g., `class = "HTTPS"`) require an explicit design decision before Phase 7 coding begins. Research flags this as unresolved. Options: treat as override (simplest) or reject as ambiguous. Resolve during Phase 7 planning.
|
||||||
|
|
||||||
## Session Continuity
|
## Session Continuity
|
||||||
|
|
||||||
Last session: 2026-03-26T14:50:00.000Z
|
Last session: 2026-03-26T15:30:00.000Z
|
||||||
Stopped at: Milestone v1.0 archived
|
Stopped at: v1.1 roadmap written (ROADMAP.md, STATE.md, REQUIREMENTS.md traceability updated)
|
||||||
Resume file: None
|
Resume file: None
|
||||||
|
|||||||
Reference in New Issue
Block a user