Add immutable named frame, pose and parameter snapshots - #27
Merged
Merged
Conversation
This was referenced Sep 7, 2026
resolve() raised a bare KeyError for a name that is not in the snapshot, while every other missing reference in the module raises ValueError -- so a caller following the documented contract did not catch a mistyped pose name, and the message said nothing about what was wrong with it. from_dict is annotated for any Mapping but tested for dict, so a read-only view of a perfectly good document was refused as an unsupported version, sending the caller to look at the version field. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.
Define a fixture once, teach poses relative to it, and resolve those poses to ordinary WRF targets. Updating the fixture produces a new snapshot whose descendant poses move together; already loaded snapshots keep their values.
Adds immutable frames, poses and scalar parameters, hierarchical frame resolution, conversion of observed poses for teaching, and a versioned JSON-compatible representation. Translations use millimetres and rotations use degrees with the native robot intrinsic XYZ convention (
Rx · Ry · Rz). Cycles, missing references, invalid rigid transforms, non-finite values and deletion of referenced frames are refused. Storage and robot I/O remain with the host.Stacked on #26. The companion Commander #50 on
feat/named-setup-dataprovides persistence, teaching controls and explicit Python loading/export. It uses the same connected client and native preview paths as existing numeric commands.Validation: all 152 contract tests passed, with 4 existing skips. The new workflows cover shared-pose relocation, translation and rotation, hierarchy, teaching round trips, singular orientations, snapshot independence and invalid references. The mixed-axis regression failed before the correction and now passes. Source type checks and pre-commit hooks passed; CI is rerunning on the updated head.