THALis: streaming callback architecture

callback → buffer → processing, keep the sample shape consistent. plotting / writing to disk shouldn't be sitting there holding up acquisition

archived change: commit 726b357 expands stream.py and adds src/main.py as the entry point. The record identifies channel configuration, real-time sample callbacks and structured data flow.

pipeline contract to inspect: callback input shape, timestamp convention, channel ordering and ownership of buffers. Acquisition should not silently change the meaning or order of channels before preprocessing consumes them.

code locations: the historical src/unicornlsl/stream.py and src/main.py; the interface package is renamed unicorneeg in a later commit. The archive reports file-size changes but does not expose an exact line-number API contract.

review questions: what work happens in the acquisition callback and what is queued elsewhere? Can plotting or disk writes block sample receipt? What is the failure/reconnect behavior? The archive's speculation about study during the preceding gap is omitted; only the documented implementation change is retained.

archived code references: 726b357.

Lab Streaming Layer introduction
Lab Streaming Layer introduction

unicorn2lsl.py streaming settings
unicorn2lsl.py streaming settings