Rename optional lookup to find(), add throwing get(), and provide
getInt/getPositiveInt/getPositiveNonZeroInt with optional defaults so
callers own missing-key policy without baking domain period semantics
into spinscale.
Co-authored-by: Cursor <cursoragent@cursor.com>
Explain the admit-after-cancel race and that daemons should disconnect at
the protocol layer before sealing admission (or handle closed-admission on enqueue).
Co-authored-by: Cursor <cursoragent@cursor.com>
Boost 1.90 marks deadline_timer deprecated; keep historical type aliases so existing spinscale tests need no renames.
Co-authored-by: Cursor <cursoragent@cursor.com>
Keep linking Boost::log, and only require Boost::system on older package sets that still ship libboost_system.
Co-authored-by: Cursor <cursoragent@cursor.com>
Move ProbeComponentThreadHarness into spinscale_probe_support (sscl::probe) so tools can link it without gtest; keep a sscl::tests compatibility shim.
Co-authored-by: Cursor <cursoragent@cursor.com>
Shutdown call sites must set slot cancelers before cancelling timers, I/O,
or hardware capture so callees observe stop intent when unblocked.
Co-authored-by: Cursor <cursoragent@cursor.com>