docs(09-02): complete auto-assign range update plan
This commit is contained in:
@@ -28,7 +28,7 @@ Requirements for extended protocol coverage milestone. Each maps to roadmap phas
|
|||||||
- [ ] **FREQ-01**: All traffic classes (existing + new) are redistributed into group-coherent frequency bands using musical interval ratios (not fixed Hz steps)
|
- [ ] **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-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-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
|
- [x] **FREQ-04**: Auto-assign frequency range for user custom classes is updated to avoid collision with new built-in frequencies
|
||||||
|
|
||||||
### Group System
|
### Group System
|
||||||
|
|
||||||
@@ -71,7 +71,7 @@ Which phases cover which requirements. Updated during roadmap creation.
|
|||||||
| FREQ-01 | Phase 9 | Pending |
|
| FREQ-01 | Phase 9 | Pending |
|
||||||
| FREQ-02 | Phase 9 | Pending |
|
| FREQ-02 | Phase 9 | Pending |
|
||||||
| FREQ-03 | Phase 9 | Pending |
|
| FREQ-03 | Phase 9 | Pending |
|
||||||
| FREQ-04 | Phase 9 | Pending |
|
| FREQ-04 | Phase 9 | Complete |
|
||||||
| GRP-01 | Phase 9 | Pending |
|
| GRP-01 | Phase 9 | Pending |
|
||||||
| GRP-04 | Phase 9 | Pending |
|
| GRP-04 | Phase 9 | Pending |
|
||||||
| PROTO-01 | Phase 10 | Pending |
|
| PROTO-01 | Phase 10 | Pending |
|
||||||
|
|||||||
@@ -63,10 +63,10 @@ Plans:
|
|||||||
2. Every within-family pair of frequencies satisfies at least a major second interval (ratio 1.122), verifiable by inspection of the table
|
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
|
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
|
4. `FreqConfig` has a `Group` string field and all existing `ClassFreqConfigs` entries compile with the new struct shape
|
||||||
**Plans:** 2 plans
|
**Plans:** 1/2 plans executed
|
||||||
Plans:
|
Plans:
|
||||||
- [ ] 09-01-PLAN.md — Add Group field to FreqConfig, rebalance ClassFreqConfigs to major-second ladder
|
- [ ] 09-01-PLAN.md — Add Group field to FreqConfig, rebalance ClassFreqConfigs to major-second ladder
|
||||||
- [ ] 09-02-PLAN.md — Update auto-assign range from [1200,2350] to [2500,4000] Hz
|
- [x] 09-02-PLAN.md — Update auto-assign range from [1200,2350] to [2500,4000] Hz
|
||||||
|
|
||||||
### Phase 10: Classification Layer
|
### 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
|
**Goal**: All new protocol families are classified — ~21 new TrafficClass constants exist, AllClasses() covers them, and DefaultRules maps all new ports to their classes
|
||||||
@@ -102,6 +102,6 @@ Plans:
|
|||||||
| 6. Config Package and Sound Overrides | 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 |
|
| 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 |
|
| 8. Test and Constant Cleanup | v1.2 | 1/1 | Complete | 2026-03-27 |
|
||||||
| 9. Frequency Design and Group Architecture | v1.2 | 0/2 | Not started | - |
|
| 9. Frequency Design and Group Architecture | v1.2 | 1/2 | In Progress| |
|
||||||
| 10. Classification Layer | v1.2 | 0/? | Not started | - |
|
| 10. Classification Layer | v1.2 | 0/? | Not started | - |
|
||||||
| 11. Synthesis and Config Layer | v1.2 | 0/? | Not started | - |
|
| 11. Synthesis and Config Layer | v1.2 | 0/? | Not started | - |
|
||||||
|
|||||||
+14
-12
@@ -2,15 +2,15 @@
|
|||||||
gsd_state_version: 1.0
|
gsd_state_version: 1.0
|
||||||
milestone: v1.2
|
milestone: v1.2
|
||||||
milestone_name: Extended Protocol Coverage
|
milestone_name: Extended Protocol Coverage
|
||||||
status: verifying
|
status: executing
|
||||||
stopped_at: Phase 9 context gathered
|
stopped_at: Completed 09-02-PLAN.md (auto-assign range update)
|
||||||
last_updated: "2026-03-27T12:45:39.811Z"
|
last_updated: "2026-03-27T13:09:48.759Z"
|
||||||
last_activity: 2026-03-27
|
last_activity: 2026-03-27
|
||||||
progress:
|
progress:
|
||||||
total_phases: 4
|
total_phases: 4
|
||||||
completed_phases: 1
|
completed_phases: 1
|
||||||
total_plans: 1
|
total_plans: 3
|
||||||
completed_plans: 1
|
completed_plans: 2
|
||||||
percent: 0
|
percent: 0
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -21,13 +21,13 @@ progress:
|
|||||||
See: .planning/PROJECT.md (updated 2026-03-27)
|
See: .planning/PROJECT.md (updated 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.
|
**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 08 — test-and-constant-cleanup
|
**Current focus:** Phase 09 — frequency-design-and-group-architecture
|
||||||
|
|
||||||
## Current Position
|
## Current Position
|
||||||
|
|
||||||
Phase: 9
|
Phase: 09 (frequency-design-and-group-architecture) — EXECUTING
|
||||||
Plan: Not started
|
Plan: 2 of 2
|
||||||
Status: Phase complete — ready for verification
|
Status: Ready to execute
|
||||||
Last activity: 2026-03-27
|
Last activity: 2026-03-27
|
||||||
|
|
||||||
Progress: [░░░░░░░░░░] 0%
|
Progress: [░░░░░░░░░░] 0%
|
||||||
@@ -50,6 +50,7 @@ Progress: [░░░░░░░░░░] 0%
|
|||||||
|
|
||||||
**Recent Trend:** Stable
|
**Recent Trend:** Stable
|
||||||
| Phase 08 P01 | 1 | 2 tasks | 2 files |
|
| Phase 08 P01 | 1 | 2 tasks | 2 files |
|
||||||
|
| Phase 09 P02 | 3 | 2 tasks | 2 files |
|
||||||
|
|
||||||
## Accumulated Context
|
## Accumulated Context
|
||||||
|
|
||||||
@@ -63,6 +64,7 @@ Progress: [░░░░░░░░░░] 0%
|
|||||||
- [Phase 07]: LoadResult struct chosen over tuple return for config.Load() — cleaner API contract
|
- [Phase 07]: LoadResult struct chosen over tuple return for config.Load() — cleaner API contract
|
||||||
- [Phase 08]: NumLayers and GainPerLayer deleted — dead code since NewBank computes gain dynamically as 1/N
|
- [Phase 08]: NumLayers and GainPerLayer deleted — dead code since NewBank computes gain dynamically as 1/N
|
||||||
- [Phase 08]: TestFrequenciesInRange now validates against Nyquist (22050 Hz) — any new BaseHz in (0, 22050) is accepted without test surgery
|
- [Phase 08]: TestFrequenciesInRange now validates against Nyquist (22050 Hz) — any new BaseHz in (0, 22050) is accepted without test surgery
|
||||||
|
- [Phase 09]: autoAssignFreq range moved to [2500, 4000] Hz with numSteps=31 to guarantee no collision with built-in frequencies (max 2449 Hz)
|
||||||
|
|
||||||
### Pending Todos
|
### Pending Todos
|
||||||
|
|
||||||
@@ -75,6 +77,6 @@ Progress: [░░░░░░░░░░] 0%
|
|||||||
|
|
||||||
## Session Continuity
|
## Session Continuity
|
||||||
|
|
||||||
Last session: 2026-03-27T12:45:39.804Z
|
Last session: 2026-03-27T13:09:48.752Z
|
||||||
Stopped at: Phase 9 context gathered
|
Stopped at: Completed 09-02-PLAN.md (auto-assign range update)
|
||||||
Resume file: .planning/phases/09-frequency-design-and-group-architecture/09-CONTEXT.md
|
Resume file: None
|
||||||
|
|||||||
@@ -0,0 +1,78 @@
|
|||||||
|
---
|
||||||
|
phase: 09-frequency-design-and-group-architecture
|
||||||
|
plan: "02"
|
||||||
|
subsystem: config
|
||||||
|
tags: [frequency-design, auto-assign, collision-prevention, test-update]
|
||||||
|
dependency_graph:
|
||||||
|
requires: []
|
||||||
|
provides: [updated-autoAssignFreq-range, collision-free-auto-assign]
|
||||||
|
affects: [config/config.go, config/config_test.go]
|
||||||
|
tech_stack:
|
||||||
|
added: []
|
||||||
|
patterns: [FNV-32a hash, deterministic frequency assignment]
|
||||||
|
key_files:
|
||||||
|
created: []
|
||||||
|
modified:
|
||||||
|
- config/config.go
|
||||||
|
- config/config_test.go
|
||||||
|
decisions:
|
||||||
|
- "autoAssignFreq range moved to [2500, 4000] Hz with numSteps=31 (50 Hz steps) to guarantee 51 Hz gap above max built-in frequency of 2449 Hz"
|
||||||
|
- "TestAutoFreqSkipsBuiltins updated to expect 150.0 for HTTPS (coordinated with Plan 01 rebalancing)"
|
||||||
|
metrics:
|
||||||
|
duration: "~3 min"
|
||||||
|
completed: "2026-03-27"
|
||||||
|
tasks_completed: 2
|
||||||
|
files_modified: 2
|
||||||
|
---
|
||||||
|
|
||||||
|
# Phase 9 Plan 2: Auto-Assign Frequency Range Update Summary
|
||||||
|
|
||||||
|
Update autoAssignFreq to use [2500, 4000] Hz with 31 steps of 50 Hz, ensuring no collision with any built-in frequency (max 2449 Hz after Phase 9 Plan 1 rebalancing).
|
||||||
|
|
||||||
|
## What Was Built
|
||||||
|
|
||||||
|
Updated the `autoAssignFreq` function constants and corresponding test assertions so user-defined traffic classes are always assigned frequencies in the [2500, 4000] Hz range, safely above all built-in protocol frequencies.
|
||||||
|
|
||||||
|
## Tasks Completed
|
||||||
|
|
||||||
|
| Task | Name | Commit | Files |
|
||||||
|
|------|------|--------|-------|
|
||||||
|
| 1 | Update autoAssignFreq constants and comment | 8ae1ddc | config/config.go |
|
||||||
|
| 2 | Update config_test.go auto-assign range assertion | dbcbeb3 | config/config_test.go |
|
||||||
|
|
||||||
|
## Changes Made
|
||||||
|
|
||||||
|
### Task 1: config/config.go
|
||||||
|
|
||||||
|
- Changed `baseHz` constant from `1200.0` to `2500.0`
|
||||||
|
- Changed `numSteps` from `uint32(24)` to `uint32(31)` (covers [2500, 4000] in 50 Hz steps: 2500 + 30*50 = 4000)
|
||||||
|
- Updated function comment from `[1200, 2350]` to `[2500, 4000]`
|
||||||
|
- `stepHz = 50.0` unchanged
|
||||||
|
|
||||||
|
### Task 2: config/config_test.go
|
||||||
|
|
||||||
|
- Updated `TestAutoFreqAssignment` comment from `[1200, 2350]` to `[2500, 4000]`
|
||||||
|
- Updated range bounds assertion from `< 1200.0 || > 2350.0` to `< 2500.0 || > 4000.0`
|
||||||
|
- Updated `TestAutoFreqSkipsBuiltins` HTTPS expected value from `175.0` to `150.0` (coordinated with Plan 01 HTTPS rebalancing)
|
||||||
|
|
||||||
|
## Verification Results
|
||||||
|
|
||||||
|
- `go build ./config/...` exits 0
|
||||||
|
- `TestAutoFreqAssignment` passes
|
||||||
|
- `TestAutoFreqDeterministic` passes
|
||||||
|
- `TestAutoFreqSkipsBuiltins` will pass once Plan 01 updates HTTPS BaseHz to 150.0
|
||||||
|
|
||||||
|
## Deviations from Plan
|
||||||
|
|
||||||
|
None - plan executed exactly as written.
|
||||||
|
|
||||||
|
## Known Stubs
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
## Self-Check: PASSED
|
||||||
|
|
||||||
|
- config/config.go contains `baseHz = 2500.0`: FOUND
|
||||||
|
- config/config.go contains `numSteps = uint32(31)`: FOUND
|
||||||
|
- config/config_test.go contains `cfg.BaseHz < 2500.0 || cfg.BaseHz > 4000.0`: FOUND
|
||||||
|
- Commits 8ae1ddc and dbcbeb3 exist in git log
|
||||||
Reference in New Issue
Block a user