diff --git a/.planning/REQUIREMENTS.md b/.planning/REQUIREMENTS.md index 8a80609..4a33cd8 100644 --- a/.planning/REQUIREMENTS.md +++ b/.planning/REQUIREMENTS.md @@ -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-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-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 @@ -71,7 +71,7 @@ Which phases cover which requirements. Updated during roadmap creation. | FREQ-01 | Phase 9 | Pending | | FREQ-02 | Phase 9 | Pending | | FREQ-03 | Phase 9 | Pending | -| FREQ-04 | Phase 9 | Pending | +| FREQ-04 | Phase 9 | Complete | | GRP-01 | Phase 9 | Pending | | GRP-04 | Phase 9 | Pending | | PROTO-01 | Phase 10 | Pending | diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index 2f4caa8..890757f 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -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 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:** 2 plans +**Plans:** 1/2 plans executed Plans: - [ ] 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 **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 | | 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 | 0/2 | Not started | - | +| 9. Frequency Design and Group Architecture | v1.2 | 1/2 | In Progress| | | 10. Classification Layer | v1.2 | 0/? | Not started | - | | 11. Synthesis and Config Layer | v1.2 | 0/? | Not started | - | diff --git a/.planning/STATE.md b/.planning/STATE.md index 8e90a69..fbd0a48 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -2,15 +2,15 @@ gsd_state_version: 1.0 milestone: v1.2 milestone_name: Extended Protocol Coverage -status: verifying -stopped_at: Phase 9 context gathered -last_updated: "2026-03-27T12:45:39.811Z" +status: executing +stopped_at: Completed 09-02-PLAN.md (auto-assign range update) +last_updated: "2026-03-27T13:09:48.759Z" last_activity: 2026-03-27 progress: total_phases: 4 completed_phases: 1 - total_plans: 1 - completed_plans: 1 + total_plans: 3 + completed_plans: 2 percent: 0 --- @@ -21,13 +21,13 @@ progress: 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. -**Current focus:** Phase 08 — test-and-constant-cleanup +**Current focus:** Phase 09 — frequency-design-and-group-architecture ## Current Position -Phase: 9 -Plan: Not started -Status: Phase complete — ready for verification +Phase: 09 (frequency-design-and-group-architecture) — EXECUTING +Plan: 2 of 2 +Status: Ready to execute Last activity: 2026-03-27 Progress: [░░░░░░░░░░] 0% @@ -50,6 +50,7 @@ Progress: [░░░░░░░░░░] 0% **Recent Trend:** Stable | Phase 08 P01 | 1 | 2 tasks | 2 files | +| Phase 09 P02 | 3 | 2 tasks | 2 files | ## Accumulated Context @@ -63,6 +64,7 @@ Progress: [░░░░░░░░░░] 0% - [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]: 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 @@ -75,6 +77,6 @@ Progress: [░░░░░░░░░░] 0% ## Session Continuity -Last session: 2026-03-27T12:45:39.804Z -Stopped at: Phase 9 context gathered -Resume file: .planning/phases/09-frequency-design-and-group-architecture/09-CONTEXT.md +Last session: 2026-03-27T13:09:48.752Z +Stopped at: Completed 09-02-PLAN.md (auto-assign range update) +Resume file: None diff --git a/.planning/phases/09-frequency-design-and-group-architecture/09-02-SUMMARY.md b/.planning/phases/09-frequency-design-and-group-architecture/09-02-SUMMARY.md new file mode 100644 index 0000000..934154f --- /dev/null +++ b/.planning/phases/09-frequency-design-and-group-architecture/09-02-SUMMARY.md @@ -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