homelabby/internal
Mikkel Georgsen 82eaf6bed7 feat(04-01): USB Manager goroutine-per-device, poll loop, reconnect, leak-safe teardown
- Manager with injectable enumerateFunc and serialOpener for test isolation
- goroutine-per-device model: deviceLoop owns one serial port per device
- context+done-channel teardown: inner read goroutine exits on ctx.Done()
- Read buffer capped at 4096 bytes (T-04-01 threat mitigation)
- Poll loop reconciles prev/current snapshots for connect/disconnect events
- ErrDeviceNotConnected returned by Send() when device absent
- All 5 manager tests pass with -race flag; goroutine count stable across 5 replug cycles
- mockPort test helper blocks Read until Close() unblocks it (realistic behavior)
2026-04-10 06:45:26 +00:00
..
ai feat(02-02): three-tier orchestrator with confidence routing and research stub 2026-04-10 05:47:41 +00:00
api feat(03-02): wire GET /api/inventory and GET /api/inventory/{id} routes 2026-04-10 06:15:12 +00:00
config feat(02-03): wire POST /api/intake route, real WAQ handler, and NetBox defaults in config 2026-04-10 05:55:41 +00:00
inventory feat(02-03): POST /api/intake handler with orchestrator and NetBox wiring 2026-04-10 05:54:33 +00:00
netbox feat(02-03): POST /api/intake handler with orchestrator and NetBox wiring 2026-04-10 05:54:33 +00:00
queue feat(02-02): WAQ real NetBox op handler replacing NoOpHandler 2026-04-10 05:48:30 +00:00
usb feat(04-01): USB Manager goroutine-per-device, poll loop, reconnect, leak-safe teardown 2026-04-10 06:45:26 +00:00