- Rewrite acoustic_node.cpp:
- Use PipelineConfig instead of removed PipelineParams
- Use Pipeline::Process(flat_samples) returning AcousticFrame
- Remove obsolete init() and process_single_channel() calls
- Add flatten_audio helper for interleaved multi-channel data
- Rewrite threat_publisher.cpp:
- Implement ThreatPublisher::Impl PIMPL pattern
- Accept AcousticFrame instead of old TrackedThreat vector
- Add NumPublished() counter
- Fix CMakeLists.txt: remove stale KISSFFT_DIR from test includes
- Add build_core_test.bat for compiling all test targets on Windows
- All core tests pass (test_core_lib 6/6)