Skip to content

feat: add local terminal control for one or two recorders - #241

Open
RedAmancy918 wants to merge 1 commit into
pollen-robotics:developfrom
RedAmancy918:feat/dual-hand-controller
Open

RedAmancy918 wants to merge 1 commit into
pollen-robotics:developfrom
RedAmancy918:feat/dual-hand-controller

Conversation

@RedAmancy918

Copy link
Copy Markdown

Add a standard-library workstation CLI for operating one or two Grabette recorders over a trusted LAN. Operators can start either hand or send concurrent start requests, monitor capture and saving without a browser, and explicitly confirm deletion of fixed episode IDs. Concurrent requests are software triggers; they do not guarantee synchronized exposure or replace fleet scheduling.

The CLI distinguishes an acknowledged start from fresh, increasing data counters, and keeps saved-file status separate. It includes watchdog-style health warnings, optional metrics, task-session status, local JSONL logs, and a read-only --once --json mode. An example configuration supports either hand on its own and contains no deployment-specific addresses. Counter requirements follow device capabilities, so a Gemini 305 rig does not wait for nonexistent IMU samples.

The same PR supplies the minimal matching device API: a versioned identity/capability response, explicit local_only start/stop flags, and an expected_episode_id stop guard. Requests without the new fields retain the existing fleet behavior. The client verifies support before mutations rather than sending flags that older servers could silently ignore. Partial starts only roll back acknowledged matching episodes; unknown results are not automatically retried. Deletion freezes the selected IDs and expires its confirmation after 30 seconds; quitting does not stop acquisition.

Validation:

  • 91 new CLI/API regression cases pass, covering fleet defaults, local-only control, episode mismatches, missing IMU, stale/reordered status, partial/unknown starts, saving-state changes and fixed-ID deletion.
  • Full local device suite: 523 passed, 5 deselected because macOS lacks the Linux CLOCK_BOOTTIME behavior those existing tests require. Legacy import-time home paths were isolated to a temporary test directory; existing loopback HTTP tests ran locally.
  • Workspace Ruff 0.16.0, git diff --check, CLI help, and documentation MDX build pass.
  • No new runtime dependencies, private configurations, recordings, or session logs are included. No changes were deployed to the physical devices.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant