feat(protocol-designer,step-generation): eagerly computes enriched robot state at initial deck state#21275
Open
feat(protocol-designer,step-generation): eagerly computes enriched robot state at initial deck state#21275
Conversation
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## edge #21275 +/- ##
=======================================
Coverage 57.30% 57.30%
=======================================
Files 3991 3991
Lines 327450 327418 -32
Branches 46619 46618 -1
=======================================
- Hits 187651 187634 -17
+ Misses 139580 139565 -15
Partials 219 219
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
koji
reviewed
Apr 15, 2026
| labware = assignContainsAmongSiblings(labware, labwareEntities) | ||
| } | ||
| // assign contains among siblings | ||
| labware = assignContainsAmongSiblings(labware, labwareEntities) |
Contributor
There was a problem hiding this comment.
there is any possibility that labwareEntities gets null/undefined?
Collaborator
Author
There was a problem hiding this comment.
this should never be the case. At worst it will be an empty object {}. Typechecks enforce this as well
koji
approved these changes
Apr 15, 2026
Contributor
koji
left a comment
There was a problem hiding this comment.
left one question but the changes look good to me.
…s wire up This PR threads `stackedOnNode` (and related `contains`) throuh PD’s initial deck setup and through step generation robot state updates so stack-graph logic stays consistent with the PE model.
…bot state at initial deck state This PR tightens how PD and step-generation build the labware stack graph (stackedOnNode and sibling contains). Labware temporal properties are enriched with these two properties once when building getInitialRobotState, instead of again on every active timeline step, so mid-protocol state is expected to stay correct via command updaters (moves, stacker flows, etc.). Related PD selectors still expose largest stacks and free addressable areas for the initial deck and the active simulated step based on these populated properties, but they will not recompute the enriched graph.
eb5b6af to
b3c3ee0
Compare
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.
NOTE: This PR is targeting another branch upon whose merging this PR is dependent so that the diff is clear. Once that PR merges, I will rebase this branch off
edgeedgeonce feat(protocol-designer,step-generation): initial stackingNode/contains wire up #21265 merges 🚨Overview
This PR tightens how PD and step-generation build the labware stack graph (stackedOnNode and sibling contains). Labware temporal properties are enriched with these two properties once when building getInitialRobotState, instead of again on every active timeline step, so mid-protocol state is expected to stay correct via command updaters (moves, stacker flows, etc.). Related PD selectors still expose largest stacks and free addressable areas for the initial deck and the active simulated step based on these populated properties, but they will not recompute the enriched graph.
Test Plan and Hands on Testing
enrichRobotStateForStackGraphTraversalsacross steps to ensure it only is run when initial deck setup changesChangelog
Review requests
Please mainly review code for sanity and style
Risk assessment
lowish