Commit Graph
176 Commits
Author SHA1 Message Date
gurix 15ad990f83 docs(11-02): complete group-ordered PrintConfig and [groups] TOML plan 2026-03-27 16:37:18 +01:00
gurix 7bf3ea12a3 test(11-02): add group header and reassignment tests (GRP-02, GRP-03)
- TestPrintConfigGroupHeaders: verifies all group section headers in canonical order
- TestLoadGroupOverride: verifies [groups] TOML reassigns class group without changing Hz/waveform
- TestLoadGroupUnknownClass: verifies unknown class in [groups] produces warning not error
- TestPrintConfigGroupReassignment: verifies PrintConfig reflects reassigned group placement
2026-03-27 16:36:07 +01:00
gurix 374282e5de feat(11-02): add [groups] TOML support and group-ordered PrintConfig
- Add Groups map[string]string field to rawConfig struct
- Add applyGroupOverrides function for [groups] reassignment with stderr warning on unknown class
- Add groupOrder canonical slice for section header ordering
- Refactor PrintConfig to emit group headers (Infrastructure, Web, Mail, Remote Access, File Transfer, Database, Discovery, VoIP, Unknown)
- Classes within each group sorted by ascending BaseHz
- User-defined classes emitted under '# User-defined' section
- Non-canonical group names (user-invented) emitted in sorted order after canonical groups
2026-03-27 16:35:10 +01:00
gurix b9bcde4f46 merge: resolve STATE.md conflict (accept agent version) 2026-03-27 16:33:08 +01:00
gurix a0dc6d6a38 docs(11-01): complete frequency-config data layer plan
- Add 11-01-SUMMARY.md with 35-class ClassFreqConfigs completion
- Update STATE.md: progress 86%, decisions recorded, plan metrics
- Update ROADMAP.md: phase 11 progress (1/2 plans complete)
- Mark GRP-02 and GRP-03 complete in REQUIREMENTS.md
2026-03-27 16:32:47 +01:00
gurix 35d8915e41 fix(11-01): update hardcoded count assertions to reflect 35 traffic classes
- Rename TestNewBankHas14Layers to TestNewBankHasAllLayers, use len(classify.AllClasses())
- Update config_test.go: replace 4 hardcoded 14 counts with len(classify.AllClasses())
- Update TestPrintConfigContainsAllClasses: replace hardcoded list with AllClasses() loop
- Update classifier_test.go: change TestAllClassesCount want from 32 to 35
2026-03-27 16:31:26 +01:00
gurix 1556ce83e9 feat(11-01): add 21 ClassFreqConfigs entries and include LDAP/Kerberos/Syslog in AllClasses()
- Add 21 new ClassFreqConfigs entries covering mDNS/SSDP/SNMP/QUIC/IMAP/POP3/SMTPSub/RDP/Telnet/VNC/FTP/SMB/TFTP/MySQL/PostgreSQL/Redis/MongoDB/SIP/LDAP/Kerberos/Syslog
- Update AllClasses() to return 35 entries (add LDAP/Kerberos/Syslog in Infrastructure section)
- Remove outdated Phase 11 exclusion comment from AllClasses() doc comment
2026-03-27 16:30:02 +01:00
gurix 683470a7b1 docs(11): create phase plan 2026-03-27 16:25:14 +01:00
gurix 438079111c docs(phase-11): add research and validation strategy 2026-03-27 16:21:24 +01:00
gurix aa1aca29a8 docs(11): research synthesis-and-config-layer phase 2026-03-27 16:20:37 +01:00
gurix e8072510f4 docs(state): record phase 11 context session 2026-03-27 16:16:36 +01:00
gurix 0b02460853 docs(11): capture phase context 2026-03-27 16:16:30 +01:00
gurix ac2b374253 docs(phase-10): evolve PROJECT.md after phase completion 2026-03-27 16:04:07 +01:00
gurix fc631c704a docs(phase-10): complete phase execution 2026-03-27 16:03:42 +01:00
gurix eb1cf236d0 Merge branch 'worktree-agent-a776e863' 2026-03-27 16:00:24 +01:00
gurix 0ae39e7ad4 docs(10-02): complete classification-layer test coverage plan
- 28 new subtests in TestClassify covering all new protocol/port combinations
- TestAllClassesCount updated to assert 32 classes
- All PROTO-01 through PROTO-09 requirements satisfied
2026-03-27 16:00:10 +01:00
gurix f792370d7f feat(10-02): update TestAllClassesCount from 14 to 32
Reflects 14 existing + 18 new classes in AllClasses(); LDAP/Kerberos/Syslog
excluded until Phase 11 adds their ClassFreqConfigs entries.
2026-03-27 15:58:29 +01:00
gurix 038f89f18e feat(10-02): add 28 new classification subtests to TestClassify
- Mail: IMAP 143/993, POP3 110/995, SMTPSub 587 (PROTO-01)
- File Transfer: FTP 20/21, SMB 445, TFTP 69 (PROTO-02)
- Remote Access: RDP 3389, Telnet 23, VNC 5900 (PROTO-03)
- Database: MySQL 3306, PostgreSQL 5432, Redis 6379, MongoDB 27017 (PROTO-04)
- Discovery: mDNS 5353, SSDP 1900, SNMP 161/162 (PROTO-05)
- VoIP: SIP TCP+UDP 5060 (PROTO-06)
- Web: QUIC UDP/443 distinct from HTTPS TCP/443 (PROTO-07)
- Infrastructure: LDAP 389/636, Kerberos TCP+UDP 88, Syslog 514 (PROTO-08)
2026-03-27 15:58:17 +01:00
gurix 4cb8cbf334 merge: resolve STATE.md conflict (accept agent version) 2026-03-27 15:56:21 +01:00
gurix 472849379d docs(10-01): complete classification-layer constants and rules plan
- 21 new TrafficClass constants (IMAP, POP3, SMTP-sub, FTP, SMB, TFTP, RDP, Telnet, VNC, MySQL, PostgreSQL, Redis, MongoDB, mDNS, SSDP, SNMP, SIP, QUIC, LDAP, Kerberos, Syslog)
- 30 new port-matching rules in DefaultRules (42 total, catch-alls last)
- AllClasses() returns 32 classes (LDAP/Kerberos/Syslog deferred to Phase 11)
- PROTO-01 through PROTO-08 requirements marked complete
2026-03-27 15:56:01 +01:00
gurix cd8593eef5 feat(10-01): add 30 new port-matching rules to DefaultRules
- Add Discovery rules: mDNS (5353), SSDP (1900), SNMP (161/162)
- Add Mail rules: IMAP (143/993), POP3 (110/995), SMTP-sub (587)
- Add Remote Access rules: RDP (3389), Telnet (23), VNC (5900)
- Add File Transfer rules: FTP (20/21), SMB (445), TFTP (69)
- Add Database rules: MySQL (3306), PostgreSQL (5432), Redis (6379), MongoDB (27017)
- Add VoIP rules: SIP (5060/5061 tcp+udp)
- Add Infrastructure ext rules: LDAP (389/636), Kerberos (88 tcp+udp), Syslog (514)
- Add Web ext rule: QUIC (udp 443)
- Catch-all rules remain last; total 42 rules (12 existing + 30 new)
2026-03-27 15:53:22 +01:00
gurix 50e047438d feat(10-01): add 21 new TrafficClass constants and update AllClasses()
- Add constants for Mail (IMAP, POP3, SMTP-sub), File Transfer (FTP, SMB, TFTP)
- Add constants for Remote Access (RDP, Telnet, VNC), Database (MySQL, PostgreSQL, Redis, MongoDB)
- Add constants for Discovery (mDNS, SSDP, SNMP), VoIP (SIP), Web (QUIC)
- Add constants for Infrastructure extension (LDAP, Kerberos, Syslog)
- Update AllClasses() to return 32 classes (LDAP/Kerberos/Syslog excluded per D-01)
2026-03-27 15:52:17 +01:00
gurix 207264b490 docs(10-classification-layer): create phase plan 2026-03-27 15:47:15 +01:00
gurix 974a2728c1 docs(phase-10): add validation strategy 2026-03-27 15:42:35 +01:00
gurix b8328319ab docs(phase-10): research classification layer 2026-03-27 15:41:58 +01:00
gurix 12f26ebb97 docs(state): record phase 10 context session 2026-03-27 15:36:15 +01:00
gurix 9761dcb9e5 docs(10): capture phase context 2026-03-27 15:36:08 +01:00
gurix a91b1a854c docs(phase-09): evolve PROJECT.md after phase completion 2026-03-27 14:22:47 +01:00
gurix bf6bd8ad68 docs(phase-09): complete phase execution and verification 2026-03-27 14:22:34 +01:00
gurix fe7ee0e797 docs(09-01): complete frequency-design and group-architecture plan
- 09-01-SUMMARY.md: plan execution complete, 2 tasks, oscillator bug documented
- STATE.md: decisions recorded (Group as string, oscillator fix), session updated
- REQUIREMENTS.md: FREQ-01, FREQ-02, FREQ-03, GRP-01, GRP-04 marked complete
2026-03-27 14:18:42 +01:00
gurix 2ef180b4ba fix(09-01): add TestGroupFieldPopulated, fix oscillator normalization, update tests
- Add TestGroupFieldPopulated test to verify all ClassFreqConfigs have non-empty Group (GRP-01)
- Change TestHarmonicsNonEmpty threshold from < 2 to < 1 (accepts single-harmonic sine entries)
- Fix oscillator Advance() to use math.Abs(h.Amplitude) for normalization weight accumulation:
  triangle wave uses alternating-sign amplitudes; signed sum underestimates totalWeight causing
  output to exceed [-1,1] bounds when using WaveformPresetHarmonics (Rule 1 bug fix)
- Update TestStereoPan to use ClassSSH (pan=-0.7) instead of ClassDHCP (pan changed to 0.1)
- Update TestNewBankCustomConfigNoClip: passes after oscillator normalization fix
- Fix TestLoadPartialOverrideFrequency: derive expected WaveformType from defaults (not hardcoded 0)
- Fix TestAutoFreqSkipsBuiltins: derive expected HTTPS BaseHz from defaults (150.0 in Phase 9)
2026-03-27 14:18:37 +01:00
gurix eb36587ccf feat(09-01): add Group field to FreqConfig and rebalance ClassFreqConfigs
- Add Group string field to FreqConfig struct (GRP-04)
- Add frequency allocation table comment (32 slots, 65-2449 Hz, FREQ-03)
- Rebalance all 14 ClassFreqConfigs entries to major-second ladder (FREQ-01)
- Infrastructure band (Triangle, 65-133 Hz): ICMP/NTP/DHCP/DNS
- Web band (Sawtooth, 150-169 Hz): HTTPS/HTTP
- Mail band (Triangle, 214 Hz): SMTP
- Remote Access band (Square, 343 Hz): SSH
- Unknown band (Custom, 771-1375 Hz): Unknown1-4, OtherTCP, OtherUDP
- Remove stale NumLayers and GainPerLayer constants (Phase 8 cleanup)
- Non-Unknown entries use WaveformPresetHarmonics; Unknown retain hand-tuned {1,1.0},{2,0.8},{3,0.4}
2026-03-27 14:18:12 +01:00
gurix 306809d1a5 docs(09-02): complete auto-assign range update plan 2026-03-27 14:09:58 +01:00
gurix dbcbeb3ee7 test(09-02): update auto-assign range assertions to [2500, 4000] Hz
- Update TestAutoFreqAssignment bounds from [1200, 2350] to [2500, 4000]
- Update TestAutoFreqAssignment comment to reflect new range
- Update TestAutoFreqSkipsBuiltins HTTPS expected value from 175.0 to 150.0
  (coordinated with Plan 01 frequency rebalancing)
2026-03-27 14:09:02 +01:00
gurix 8ae1ddc773 feat(09-02): update autoAssignFreq range to [2500, 4000] Hz
- Change baseHz from 1200.0 to 2500.0
- Change numSteps from uint32(24) to uint32(31)
- Update function comment to reflect new range
- Prevents collision with built-in frequencies (max 2449 Hz)
2026-03-27 14:08:03 +01:00
gurix 08a3063633 docs(09): create phase plan 2026-03-27 14:04:11 +01:00
gurix d314817d3c docs(09): add validation strategy 2026-03-27 14:00:10 +01:00
gurix f4ad40ef19 docs(09): research phase domain — frequency allocation table and group architecture 2026-03-27 13:59:28 +01:00
gurix bd52f0bee4 docs(state): record phase 9 context session 2026-03-27 13:45:39 +01:00
gurix 2e813b42fa docs(09): capture phase context 2026-03-27 13:45:32 +01:00
gurix 9908a79a64 docs(phase-08): evolve PROJECT.md after phase completion 2026-03-27 12:53:39 +01:00
gurix 9e5db8d4d6 docs(phase-08): complete phase execution and verification 2026-03-27 12:53:08 +01:00
gurix 81ef4f9df7 docs(08-01): complete constant-cleanup plan
- SUMMARY for 08-01: stale constants removed, tests future-proofed
- STATE.md: plan advanced, progress 100%, decisions recorded
- ROADMAP.md: Phase 8 marked Complete
- REQUIREMENTS.md: CLEAN-01 marked complete
2026-03-27 08:55:38 +01:00
gurix 4800e8e463 test(08-01): future-proof frequency bounds and rename test
- Replace hardcoded [60, 1100] Hz bounds with Nyquist-based validation (0, 22050)
- Rename TestNumLayersMatchesAllClasses to TestClassFreqConfigsMatchAllClasses
- Remove duplicate TestClassFreqConfigsComplete (subset of TestAllClassesHaveConfig)
- All tests green
2026-03-27 08:54:34 +01:00
gurix fd17061b0d chore(08-01): remove stale NumLayers and GainPerLayer constants
- Delete NumLayers=14 (dead code; NewBank computes gain dynamically)
- Delete GainPerLayer=1.0/float64(NumLayers) (dead code per D-01)
- Remaining constants: SampleRate, WindowMs, SamplesPerWindow, WhisperFloor
2026-03-27 08:54:02 +01:00
gurix 000e6a3813 docs(08): create phase plan 2026-03-27 08:50:37 +01:00
gurix 7fd2e10c87 docs(phase-8): add validation strategy 2026-03-27 08:47:45 +01:00
gurix ceba57ed0e docs(08): research phase test and constant cleanup 2026-03-27 08:46:43 +01:00
gurix 5a7855f3ff docs(state): record phase 8 context session 2026-03-27 08:43:14 +01:00
gurix 467d415e94 docs(08): capture phase context 2026-03-27 08:43:01 +01:00