Repository navigation
release: package set 0.3.0 — HostStats message set, bias_health + derive hook, Zenoh config cleanup - #3
Merged
Conversation
…rive` hook on foxglove_json.convert * `rig_nodes/bias_health.py` — CountRate (frame rate as the slope of the BIAS frameCount over the last 2 s of status polls) and bias_drops (the sum of the loss counters the Atlas10 build reports; None when it reports none). Moved verbatim from webDisplayTools `rig/nodes/bias_health.py` (PR reiserlab/webDisplayTools#269), where the arena visualization node and the dashboard replay import it; pure, no ROS. * `foxglove_json.convert(..., derive=None)` — a second, whole-stream hook beside the per-message `enrich`: `derive(records)` gets every kept record (topic, log_ns, obj) in log order and yields new messages (topic, t_ns, obj, schema_name | None). A derived message may name one of `WELL_KNOWN_SCHEMAS` (foxglove.CompressedImage today) instead of an inferred schema; an unknown name is refused. The report gains `derived`. This is what the arena wrapper's `--stimulus` mode needs (rebuilding the expected-display images and health topics from the browser stream), and it could not be expressed through `enrich`, which maps one recorded message to one output. * tests/test_pure.py: bias_health (6 checks) + derive (5 checks); 40/40. Not a release: the version stays 0.2.1 until the next package set (README "Releasing"). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… ww18, Bergamo PC, ww14) The living setup note for every machine that installs the package set, seeded from the 2026-10-14/27 Mac runs, ww18 2026-10-15/16, the Bergamo ScanImage days and the ww14 okey-cokey setup. Application-specific setup stays with the application (webDisplayTools rig/SETUP.md points here). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ce-dependency rule Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… newer pixi, Foxglove PATH on Windows Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…orts, bias_health, Zenoh config cleanup rig_interfaces: HostStats + DiskStats / NetStats / GpuStats / ProcStats (the host monitor's /rig/host sample, verbatim from the 2026-10-28 request; no field renamed). CONTRACT: the /rig/host row, §5a, the new topics and vocabularies (ScanImage frame stream, SiPM, scanimage status `acq`), version 0.3.0. rig_nodes: scanimage_frames_node + sims.zmq_frames_mock + zmq_latency_report (ex webDisplayTools #261, Bergamo-validated 2026-10-22; paths and imports only), scanimage_node --frame-counter acqstatus + the mock's getAcqStatus, _common.spin handles SIGBREAK; sipm_node / sipm_cmd / thorsipm (ex #266, EXPERIMENTAL, never bench-tested); bias_health + the foxglove_json derive hook (rig-nodes#1) and SETUP.md (rig-nodes#2) merged in; the dead Zenoh keys routing.router.peers_failover_brokering and routing.peer.mode/linkstate removed from both json5 configs; run-dependencies pyzmq + numpy; console scripts rig-scanimage-frames, rig-zmq-frames-mock, rig-zmq-latency, rig-sipm-node, rig-sipm-cmd, rig-sipm; build_interfaces --check lists every exported message. Tests (macOS, pixi 0.83): test-pure 40/40, test 48/48, test-frames 44/44, test-sipm 25/25; CI's acceptance job now also runs the two new harnesses against the installed packages. LAB-338, LAB-303, LAB-319. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…S floor on the platform entry, requires-pixi >= 0.80
The 0.19 set's Zenoh reports `routing.peer.mode` / `linkstate` as deprecated even for `peer: {}`; the
router now starts with no warning (checked on the Mac). The workspace manifest, the CI acceptance
manifest and SETUP.md's recipe declare the macOS 14 floor on the osx-arm64 platform entry instead of
the deprecated [system-requirements] table, and `requires-pixi = ">=0.80"` keeps an older pixi from
rewriting the lock (webDisplayTools #280). Lock re-written by pixi 0.83. A mangled comment
("rmw_zenoh 0.3.01") from the version bump restored to 0.2.11.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…arm64-macos-14-0)
pixi 0.83 rejects `{ name = "osx-arm64", platform = "osx-arm64", macos = "14.0" }` ("platform entry
rejected: You tried to add a virtual package into a special subdir platform"); the name is the one pixi
0.80 itself wrote on ww18 when it rewrote the old lock. Same in the CI acceptance manifest and the
SETUP.md recipe.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…burst (CI's macOS runner drains faster than the burst) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…stays out of rig-nodes for now) Michael is moving the imaging (2P / ScanImage) work out of the public webDisplayTools repository and the inventory of what goes where is still open, so webDisplayTools #261 (frames wrapper) and #266 (SiPM) are NOT ported in this release: their nodes, mock, report, harnesses, console scripts, tasks, run-dependencies (pyzmq, numpy), CI steps and CONTRACT rows are removed again; scanimage_node, si_json_mock and _common are back to main. 0.3.0 = the HostStats message set + bias_health / the derive hook + SETUP.md + the Zenoh config cleanup + the pixi platform-entry / requires-pixi change. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…e on /rig/host), test, doc Ported from webDisplayTools `rig/host-monitor-port` f5cf5a6 (prototyped on ww18): the sampler is pure (stdlib ctypes + psutil, no ROS; Windows cycle counters, one NtQuerySystemInformation call, GetIfEntry2, NVML through ctypes; psutil elsewhere), the node publishes rig_interfaces/HostStats when the installed package has it, else std_msgs/String JSON with the same field names (--typed auto|on|off). Changes for the package: py_group's script roots are a parameter (HostSampler(py_roots=…), repeatable --py-root PATH; `-m rig_nodes.<module>` processes are grouped without it), --log-dir defaults to ./runlogs, imports from rig_nodes.host_sampler, psutil is a run-dependency, console script rig-host-monitor, `python -m rig_nodes.host_monitor` works. tests/test_host_sampler.py (34 checks, fake psutil) reads the .msg files from the installed share directory or the source tree; the acceptance job runs it. docs/host-monitor.md is the design note. CONTRACT's /rig/host row names the node's flags; SETUP.md's recipe adds the one-minute check. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…gnored; the previous release commit carried only the README) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Merged
5 tasks
mbreiser
added a commit
that referenced
this pull request
Oct 29, 2026
0.4.0: the ScanImage JSON connector moves to the private 2P rig repo (draft, after #3)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Package set 0.3.0 (one version, both packages; CONTRACT §7: a
.msgchange is a wire-contract change).rig_interfaces: the host-pressure message set (new)HostStats.msg+ its four record typesDiskStats.msg,NetStats.msg,GpuStats.msg,ProcStats.msg, verbatim from the request written on ww18 (webDisplayToolsrig/docs/host-stats-request.md, 2026-10-28; no field renamed). Published on/rig/hostat 1 Hz by the generic host monitorrig_nodes.host_monitor, which is being prototyped in webDisplayTools (rig/nodes/host_monitor.py) and moves here once measured; until a rig installs the typed package the node publishesstd_msgs/StringJSON with the same field names. CONTRACT.md: the/rig/hosttopic row (RELIABLE / KEEP_LAST 10 / VOLATILE), a §5a with the field semantics, the absent-value rule (NaN float / 0 int).python -m rig_nodes.build_interfaces --checknow lists every message the installed package exports.rig_nodesrig_nodes.bias_health(CountRate, bias_drops) + thederive(records)hook onfoxglove_json.convert(whole-stream derivations, well-known Foxglove schemas). webDisplayTools #269 (okey-cokey) needs both.routing.router.peers_failover_brokeringandrouting.peer.mode/linkstateremoved from both json5 files (they warned on every node start; an emptypeer: {}still did, so the block is gone). The router starts with no warning now.SETUP.md(rig-nodes#2) merged in; its recipe pins 0.3.0.{ name = "osx-arm64-macos-14-0", platform = "osx-arm64", macos = "14.0" }— pixi requires a name distinct from the subdir for an entry with virtual packages; the deprecated[system-requirements]table is gone),requires-pixi = ">=0.80", lock written by pixi 0.83. Same in the CI acceptance manifest and the SETUP recipe.Not in 0.3.0 (decided 2026-10-28): the ScanImage ZeroMQ frame-stream node (webDisplayTools #261) and the SiPM node (#266). The imaging (2P / ScanImage) work is being moved out of the public webDisplayTools repository and the inventory is still open; imaging code lands in rig-nodes only after that decision. A first version of this branch carried both ports; they were removed again before tagging.
CI
package-set.yml:PACKAGE_SET_VERSION0.3.0; the payload check includesbias_health.py; the acceptance manifest uses the platform-entry floor.Tested here (macOS, pixi 0.83)
pixi installbuilds both packages in place;build_interfaces --check: importable + serializes, msgs = ArenaFrame, ConnectorReply, DiskStats, FicTracFrame, GpuStats, HostStats, NetStats, ProcStatspixi run test-pure40/40,pixi run test48/48; the Zenoh router starts with 0 warningsRelease
Tag
v0.3.0on the commit that carries the channel payload (README "Releasing a package set"); consumers: webDisplayTools re-pins in its 2026-10-28 candidate (LAB-338). Linear: LAB-338 (rig-nodes), LAB-303 (bias_health / okey-cokey).🤖 Generated with Claude Code