- Add AggregatePcap to aggregate/window.go: reads ClassifiedPackets from channel, assigns to time windows using Timestamp field (D-01), fills gaps with empty snapshots (D-02: silence), fires onSnapshot callback per window (D-07) - Add 7 tests covering basic, multiple windows, gaps, empty input, WindowIndex, class counts, and onSnapshot callback - All tests pass