Skip to content

fix(protocol-designer): remove updatePatchPathField #18622

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jun 16, 2025

Conversation

ncdiehl11
Copy link
Collaborator

@ncdiehl11 ncdiehl11 commented Jun 13, 2025

Overview

Here, we remove the updatePatchPathField from dependentFieldsUpdateMoveLiquid.

Context

In the times of single-page step form PD, we wired up a patch during form updates that would reset the path from multiAspirate or multiDispense to single if advanced settings were configured such that multiAspirate or multiDispense are not possible. Here's an example:

  • P300 pipette with 300µl tips
  • 2x destination wells
  • multiDispense path
  • per-sample volume of 140µl
  • aspirate air gap of 30µl **

In this scenario, without air gap (or disposal volume), we can comfortably aspirate 280µl, and dispense 140µl into each of our 2 destinations. However, with air gap, we can no longer accommodate both samples-worth of volume with air gap— this total volume would be 140 + 140 + 30 = 310µl > 300µl tip volume. So, previously, when this air gap was configured such that the tip volume was exceeded and multiDispense was not possible, the path would flip back to single.

The trouble is that in our new step form design, air gap configuration comes on page 3 of the step form, while the path is configured on page 1! A user would select multiDispense on page 1, add an air gap on page 3, save, and not realize the path has flipped back to single.

After speaking with the API team, we resolved to remove the patch such that the form always carries the user's selected path regardless of the tip's capacity, and determine the if the form's path is valid for its corresponding step generation command creator (single -> transfer, multiAspirate -> consolidate, or multiDispense -> distribute) in moveLiquidFormToArgs (see: checkedPath). This is to ensure we don't encounter errors in step generation in distribute or consolidate if multi-dispense or -aspiration, respectively, or is not possible. The downside is that we generate the Python API method transfer_with_liquid_class rather than distribute_with_liquid_class or consolidate_with_liquid_class in this scenario, but we determined it is the least of all evils at this stage of 8.5.0 development.

In a post-release followup, I will refactor distribute and consolidate command creator logic to allow non multi-aspiration/dispense behavior so that the most accurate Python is emitted.

Closes AUTH-1987

Changelog

  • remove path patch described above
  • remove air gap check in getDisabledPathMap implementation in PathField

Risk assessment

lowish

Here, we remove the `updatePatchPathField` from `dependentFieldsUpdateMoveLiquid`.

Closes AUTH-1987
Copy link

codecov bot commented Jun 13, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 25.48%. Comparing base (cfa7df7) to head (62d9fdc).
Report is 1 commits behind head on chore_release-pd-8.5.0.

Additional details and impacted files

Impacted file tree graph

@@                    Coverage Diff                     @@
##           chore_release-pd-8.5.0   #18622      +/-   ##
==========================================================
- Coverage                   25.89%   25.48%   -0.42%     
==========================================================
  Files                        3256     3238      -18     
  Lines                      281350   280952     -398     
  Branches                    28562    28669     +107     
==========================================================
- Hits                        72869    71611    -1258     
- Misses                     208454   209312     +858     
- Partials                       27       29       +2     
Flag Coverage Δ
protocol-designer 19.10% <100.00%> (-0.02%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
...ProtocolSteps/StepForm/PipetteFields/PathField.tsx 27.21% <ø> (+0.72%) ⬆️
...andleFormChange/dependentFieldsUpdateMoveLiquid.ts 72.41% <ø> (-0.01%) ⬇️
...formLevel/handleFormChange/test/moveLiquid.test.ts 88.00% <100.00%> (-0.09%) ⬇️

... and 196 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@ncdiehl11 ncdiehl11 marked this pull request as ready for review June 15, 2025 23:32
@ncdiehl11 ncdiehl11 requested a review from a team as a code owner June 15, 2025 23:32
@jerader
Copy link
Collaborator

jerader commented Jun 16, 2025

thanks for the description! do you mind making a ticket for this? probably a ticket in this epic would be best for now.

In a post-release followup, I will refactor distribute and consolidate command creator logic to allow non multi-aspiration/dispense behavior so that the most accurate Python is emitted.

Copy link
Collaborator

@jerader jerader left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🦖

@ncdiehl11
Copy link
Collaborator Author

thanks for the description! do you mind making a ticket for this? probably a ticket in this epic would be best for now.

In a post-release followup, I will refactor distribute and consolidate command creator logic to allow non multi-aspiration/dispense behavior so that the most accurate Python is emitted.

Will do! I also noticed there's some logic in PathField that disables paths after checking air gap. I will make a commit to remove that logic.

@ncdiehl11 ncdiehl11 self-assigned this Jun 16, 2025
@ncdiehl11 ncdiehl11 requested review from a team as code owners June 16, 2025 16:14
@ncdiehl11 ncdiehl11 requested review from smb2268 and removed request for a team and smb2268 June 16, 2025 16:14
@ncdiehl11 ncdiehl11 changed the base branch from edge to chore_release-pd-8.5.0 June 16, 2025 16:14
@ncdiehl11 ncdiehl11 merged commit f461d0f into chore_release-pd-8.5.0 Jun 16, 2025
16 checks passed
@ncdiehl11 ncdiehl11 deleted the pd_fix-rip-out-path-patch branch June 16, 2025 16:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants