Repository navigation
Imaging boundary: the 2P imaging work moves to the private rig repo; gateway keeps the 2P topics (LAB-303, LAB-319) - #284
Merged
2 commits merged intoOct 29, 2026
Conversation
…on record §3.3 amendment) Michael's decision, 2026-10-28: everything specific to the 2P imaging experiments lives in reiserlab/scanimage-2026-bergamo `2p-rig-nodes/` (a pixi workspace in the rig-nodes layout on the public rig_nodes package; PROVENANCE.md there lists the source commit of every file). Copied with provenance, not rewritten in history. Removed here: - tiff2mcap (#273): rig/tools/tiff_run_to_mcap.py, check_tiff2mcap.py, rig/tests/test_tiff2mcap_runlog.py and the tiff2mcap / test-tiff2mcap / check-tiff2mcap tasks (patfile.py stays: arena code bound for pyDisplayTools) - tools/led_sweep_si.py, tools/led_sweep_quicklook.py - records: rig/SCANIMAGE-DAY.md, rig/scanimage-day-2026-10-16.md, docs/development/2p-scanimage-signal-logging.md, 2p-line-sync-rig-checklist.md - the arena composition's ScanImage node: rig.py --scanimage / --si-mock / --scanimage-args, the scanimage-node / scanimage-cmd / si-mock tasks, and the harness's ScanImage stand-in + its 5 checks (rig-nodes 0.4.0 drops the node, rig-nodes #4; re-pinning rig/ to 0.4.0 must not precede this change) Kept public (the boundary): the gateway's connector dispatch and its scanimage CONNECTOR_TOPICS entry, mcap_convert's connector derivation, the Studio's ScanImagePlugin and the emulator's --scanimage-cmds path; the 2P protocols and the Bergamo arena rig profile stay for now (comments repointed). Also: the dated §3.3 amendment in rig-software-repos-and-runners.md, the orientation skill's rig-nodes row, CLAUDE.md's rig line, and tests/test-flasher-catalog.js (its exception for the moved checklist), the expected harness counts in rig/WINDOWS-TEST.md. Tests on the Bergamo PC: root `pixi run test` 72/72 files; rig/ harness `pixi run test` 54/54 and `-e typed` 57/57 (main: 59 / 62, minus the 5 ScanImage checks; rig/WINDOWS-TEST.md updated), run on rig_nodes 0.2.1 with rig/pixi.lock unchanged (pixi 0.82 needed an unlocked install, the known #280 lock-format issue the next candidate re-locks). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ateway half of #261 / #266) The 2P rig's nodes are private since 2026-10-28 (reiserlab/scanimage-2026-bergamo `2p-rig-nodes/`; decision record §3.3 amendment). What stays public is the gateway's side, ported from #266's head (a4442ad, which includes #261) onto main: - bridge_node: the `sipm` connector (/sipm/cmd|reply|status in CONNECTOR_TOPICS, every bag's topic map and hello_ack), and the ScanImage frame-stream STREAM_TOPICS (/scanimage/frame_meta, frame_stats, preview/meta, preview/ch1-4 as sensor_msgs/CompressedImage) recorded on arrival, never derived into the run log - mcap_convert: /sipm/reply|status → {"type":"connector","src":"sipm",…} events - tests/test_gateway_registration.py (`pixi run test-gateway`, 5 checks): the gateway checks of #266's test_sipm (D1-D3) and #261's test_scanimage_frames (§G), which the private harnesses no longer carry Not ported: the nodes, their harnesses and tasks, the rig.py flags (all private now), and #261's rig_nodes._common SIGBREAK fix (_common lives in rig-nodes; the private package carries it as a shim). Tests on the Bergamo PC: test-gateway 5/5; harness `pixi run test` 59/59 (same as main); rig/pixi.lock unchanged (installed unlocked for the test, #280). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mbreiser
added a commit
that referenced
this pull request
Oct 28, 2026
…e rig repo; gateway keeps the 2P topics (LAB-303, LAB-319) # Conflicts: # rig/nodes/bridge_node.py # rig/nodes/rig.py # rig/pixi.toml # rig/tests/test_ros2_poc.py
4 tasks
mbreiser
added a commit
that referenced
this pull request
Oct 28, 2026
6 of 7 tasks
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
This PR sets the imaging boundary: everything specific to the 2P imaging experiments moves to the private rig repository,
reiserlab/scanimage-2026-bergamo, under2p-rig-nodes/. That directory is a pixi workspace in the rig-nodes layout (packagetwop_rig_nodes), built on the publicrig_nodespackage. Michael decided this on 2026-10-28 (LAB-303, LAB-319).The PR has two commits: the removal, and the gateway half of #261 / #266, which stays public.
1. Removal (
32264be)2p-rig-nodes/PROVENANCE.mdthere gives each file's source commit:rig/tools/tiff_run_to_mcap.py,check_tiff2mcap.py,rig/tests/test_tiff2mcap_runlog.py, and the three taskstools/led_sweep_si.py,tools/led_sweep_quicklook.pyrig/SCANIMAGE-DAY.md,rig/scanimage-day-2026-10-16.md,docs/development/2p-scanimage-signal-logging.md, the superseded2p-line-sync-rig-checklist.mdrig.pyloses--scanimage,--si-mockand--scanimage-args, and thescanimage-node,scanimage-cmd,si-mocktasks go. The harness no longer starts the ScanImage stand-in and node, and drops its 5 ScanImage checks;rig/WINDOWS-TEST.mdhas the new totals.rig/to 0.4.0 must not come before this PR.rig/tools/patfile.py. It is arena code, bound for pyDisplayTools per §3.3; the private repo has a copy.rig-software-repos-and-runners.mdgets a dated §3.3 amendment recording the decision and the boundary.CLAUDE.md's rig line are updated.tests/test-flasher-catalog.jsloses its exception for the moved checklist.2. Gateway half of #261 / #266 (
e25914e), ported from #266's heada4442ad(which includes #261):bridge_node:sipmconnector:/sipm/cmd|reply|statusinCONNECTOR_TOPICS, every bag's topic map, andhello_ack;STREAM_TOPICSfor the ScanImage frame stream:/scanimage/frame_meta,frame_stats,preview/meta, andpreview/ch1-4assensor_msgs/CompressedImage. They are recorded on arrival and never derived into the run log.mcap_convert:/sipm/reply|status→{"type":"connector","src":"sipm",…}.rig/tests/test_gateway_registration.py(pixi run test-gateway, 5 checks): the gateway checks from LAB-319 / Block S: read-only SiPM controller node (bias, enable, offsets, temperature into the run log) #266'stest_sipm(D1–D3) and LAB-303 / Block R: ScanImage ZMQ frame-stream wrapper node, latency report, off-rig harness #261'stest_scanimage_frames(§G).What stays public (the boundary):
CONNECTOR_TOPICS(includingscanimage),mcap_convert's connector derivation, the/<src>/cmd|reply|statuscontract,ConnectorReplyScanImagePlugin, and the emulator's--scanimage-cmdsoptiong6_2p_*,g6_2x10_2p_*) andconfigs/rigs/bergamo_g6_2x10_2p.yamlHistory: the moved files were copied, not rewritten in history, so earlier versions stay readable here. #261 and #266 get closed with a pointer after the release.
Provenance: commits in the private repo,
main:e3e9ba8:2p-rig-nodes/with the ScanImage, frames and SiPM nodes, the records and PROVENANCEd235f9e: tiff2mcap and the LED-sweep tools8ceddf6:SETUP.md, the Bergamo rows from rig-nodesdea41ed: re-pinned to rig_nodes 0.3.0694348b: thepatfile.pynoteOff-rig on the Bergamo PC, the private tests pass: test-sipm 25/25, test-frames 39/39, test-scanimage 11/11, test-tiff2mcap.
Tier
next candidate (2026-10-28 rc2). It merges after #281, #269 and #282. It is based on
main8d5b952, not rebased onto the candidate. Expect conflicts inrig/nodes/rig.pyandrig/pixi.toml, resolved in the candidate build.rig/pixi.lockis byte-identical tomain; #281 carries the re-lock.Release notes
none (rig-side only)
Test plan
Run on the Bergamo PC (Windows 11, pixi 0.82), on
rig_nodes0.2.1 asmainpins it.pixi run test(root): 72/72 filescd rig && pixi run test: 54/54 (main: 59, minus the 5 ScanImage checks)cd rig && pixi run -e typed test: 57/57 (main: 62)cd rig && pixi run test-gateway: 5/5; on the gateway commit alone, the harness is 59/59, the same asmainmain'srig/pixi.lockwith--locked(rig/pixi.lock: re-lock with pixi >= 0.80 and pin requires-pixi (plain install on a rig rewrites the lock) #280). For these runs the environments were installed unlocked, and the lock was then restored.🤖 Generated with Claude Code