Commit Graph
18 Commits
Author SHA1 Message Date
gurix 2a8fd7dd05 feat(01-03): implement ticker-driven window aggregator with TDD
- Add Aggregate function reading ClassifiedPackets, emitting WindowSnapshots per time window
- Add DefaultWindowMs=500 constant for configurable window duration
- Flush partial window on done channel close or closed events channel
- Call optional onSnapshot callback per window for verbose mode
- Add 5 tests: EmitsSnapshot, MultipleClasses, DoneFlushesPartial, EmptyWindow, WindowIndex
2026-03-25 12:16:36 +01:00
gurix 1eb1dd4104 test(01-02): add failing tests for capture package
- TestListInterfaces: verifies net.Interfaces() returns at least 1 interface
- TestListInterfacesFormat: verifies interface Name is non-empty
- TestIsPermissionError: table-driven positive cases for perm error detection
- TestIsPermissionErrorNegative: non-perm errors not flagged
- TestPermissionErrorMsg: verifies sudo + interface name + Linux setcap hint
2026-03-25 12:16:20 +01:00
gurix df5fea717b docs(01-01): complete bootstrap and protocol classification plan
- Add 01-01-SUMMARY.md documenting outcomes, commits, and decisions
- STATE.md: advance to plan 2/4, record metrics, add key decisions
- ROADMAP.md: update phase 1 progress (1/4 plans complete)
- REQUIREMENTS.md: mark CLAS-01 complete
2026-03-25 12:14:33 +01:00
gurix 25e0dc3ece chore(01-01): tidy go.mod after classifier implementation
- go mod tidy updates go.mod to reflect actual imports
- gopacket is now a direct dependency (used in classifier.go)
- go-pcap and cobra remain in go.sum for future plans
2026-03-25 12:13:01 +01:00
gurix 48ef6e53ad feat(01-01): implement config-driven classifier with 12 protocol rules
- Add classify/rules.go: Rule struct and DefaultRules slice with 12 rules
  (10 specific protocol rules + 2 catch-alls for other-TCP/other-UDP)
- Add classify/classifier.go: Classifier with NewClassifier and Classify methods
- Config-driven slice (not switch) per D-02; first-match-wins ordering
- Returns ClassUnknown for non-TCP/UDP/ICMP traffic per D-03
- All 14 tests pass covering all 11 traffic classes
2026-03-25 12:12:47 +01:00
gurix f233e80f4b test(01-01): add failing tests for all 11 protocol classification classes
- Tests for ICMP, DNS/UDP, DNS/TCP, HTTPS, HTTP, SSH, SMTP, NTP, DHCP(67/68),
  other-TCP, other-UDP, unknown
- Test for order-dependent first-match-wins rule behavior
- Uses gopacket SerializeLayers to build synthetic packets
2026-03-25 12:12:01 +01:00
gurix 15e8143389 feat(01-01): install Go 1.24, initialize module, create shared types
- Initialize Go module github.com/netsynth/netsynth with Go 1.24.1
- Create classify/types.go with 11 TrafficClass constants (ICMP, DNS, HTTPS,
  HTTP, SSH, SMTP, NTP, DHCP, other-TCP, other-UDP, unknown)
- Add ClassifiedPacket and WindowSnapshot shared types
- Add Phase 1 dependencies: gopacket v1.5.0, go-pcap, cobra v1.10.2
2026-03-25 12:11:02 +01:00
gurix 46422dfa29 Initial project setup with planning artifacts 2026-03-25 12:08:45 +01:00
gurix 5d657342d3 docs(01-capture-and-classification): create phase plan 2026-03-25 11:30:21 +01:00
gurix dc5716db25 docs(phase-1): add validation strategy 2026-03-25 11:23:37 +01:00
gurixandClaude Sonnet 4.6 55f74b66cb docs(phase-01): research capture and classification phase
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-25 11:22:54 +01:00
gurix dc45e97431 docs(state): record phase 1 context session 2026-03-25 11:14:58 +01:00
gurix d043180f88 docs(01): capture phase context 2026-03-25 11:14:49 +01:00
gurix 012791cb6f docs: create roadmap (4 phases) 2026-03-24 22:43:51 +01:00
gurix 4e4bc6ce0f docs: define v1 requirements 2026-03-24 22:41:08 +01:00
gurix e8ec6ad6b6 docs: complete project research 2026-03-24 22:36:28 +01:00
gurix 2898b787b2 chore: add project config 2026-03-24 22:29:00 +01:00
gurix 4a183cdb65 docs: initialize project 2026-03-24 22:27:26 +01:00