Skip to content

Share waldoctl's RobotError, and take home(calibrate=) from the ABC - #10

Closed
Jepson2k wants to merge 3 commits into
mainfrom
feat/thin-python-binding
Closed

Share waldoctl's RobotError, and take home(calibrate=) from the ABC#10
Jepson2k wants to merge 3 commits into
mainfrom
feat/thin-python-binding

Conversation

@Jepson2k

@Jepson2k Jepson2k commented Sep 4, 2026

Copy link
Copy Markdown
Owner

Replaces #8, which was on a branch name the cross-repo CI matching could not resolve. The chain waldoctl <- par6 <- Waldo-Commander all use feat/thin-python-binding, so Waldo-Commander's install now picks this branch up instead of falling back to the main pin, which still requires waldoctl v0.10.0 and makes its dependency resolution impossible.

RobotError is waldoctl's. parol6/utils/error_catalog.py aliases the shared class rather than defining a second one, so a frontend has one error type to represent whatever backend it is driving. The controller re-attributes a tool error by rebuilding it from the wire, because the exception is deep-copied and a dataclass replace on it does not survive that.

home() matches the ABC. calibrate=True re-runs the referencing sequence on an arm that is already homed, instead of the planned return to standby. The wire carries it as HomeCmd.force, and the planner's homed fast path honours it. The old timeout keyword keeps its position after calibrate.

Typing. The sync client and the robot factory hold SyncTool, which is what make_sync_tool returns; a redundant cast and an unused suppression go.

Tests: 194 unit, 79 integration, all passing against waldoctl on this branch.

🤖 Generated with Claude Code

https://claude.ai/code/session_014Bo12kumRx9PHnY9bL8qgn

Jepson2k and others added 3 commits September 3, 2026 22:36
A frontend represents a refused command the same way whichever backend
raised it, so the refusal type is the contract's. Same six fields, same
wire list in both directions, and an exception rather than a dataclass,
so a client can raise it as-is. make_error, the catalog and
extract_robot_error are unchanged.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Bo12kumRx9PHnY9bL8qgn
RobotError serialises back to the wire and survives copy/pickle, which
the controller's state snapshot needs.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Bo12kumRx9PHnY9bL8qgn
home() matches RobotClient: calibrate re-runs the referencing sequence
on an arm that is already homed, which the wire now carries as HomeCmd's
force flag. The sync client and robot factory hold SyncTool, the type
make_sync_tool actually returns, and a plane keep-out is now an unknown
kind on the wire.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Bo12kumRx9PHnY9bL8qgn
@Jepson2k

Jepson2k commented Sep 4, 2026

Copy link
Copy Markdown
Owner Author

Wrong repository — this work belongs on PCrnjak/PAROL6-python-API, where it now lives as PR PCrnjak#37, rebuilt on the current upstream main.

@Jepson2k Jepson2k closed this Sep 4, 2026
@Jepson2k
Jepson2k deleted the feat/thin-python-binding branch September 4, 2026 00:59
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