docs(09-02): complete auto-assign range update plan

This commit is contained in:
2026-03-27 14:09:58 +01:00
parent dbcbeb3ee7
commit 306809d1a5
4 changed files with 97 additions and 17 deletions
+2 -2
View File
@@ -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 |
+3 -3
View File
@@ -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
View File
@@ -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 08test-and-constant-cleanup **Current focus:** Phase 09frequency-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