Repository navigation
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When
offsetgoalraces withacquire stopor a new acquisition,allow_large_offsetcan remain true afteracquire_modeleavesTARGET_GUIDE: stopping does not clear the flag, and a new acquisition clears it before changing the mode, allowing another command thread to re-arm it in between. Since acamd processes multiple connections concurrently with the frame-grab loop, removing this predicate lets an in-flightdo_acquire()accept up to the 300-arcsec limit and then bypass the guide median filter, sending the correction immediately after a stop or as an acquisition correction rather than enforcingtcs_max_offset. Synchronize the allowance with the associated goal/mode transition instead of honoring the bare flag in every mode.Useful? React with 👍 / 👎.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The scenarios described are not failure modes of this change — they are the intended behavior, and none of them are relevant to the defect this fixes.
allow_large_offsetis armed by exactly one thing: a deliberateoffsetgoalcommand from the sequencer or an operator. Whatever mode the loop happens to be in when the next correction lands — mid-transition, after a stop, during re-acquisition — executing that deliberate offset is the commanded behavior. "Sending the correction immediately" and "bypassing the guide median filter" for that one correction are both exactly right: a deliberate 72″ science move must not be vetoed by a mode race (measured on sky 2026-08-26: a 6 ms loss exposed 900 s of the wrong object) nor median-filtered against sub-arcsecond guide samples (which would veto it just as silently).The blast radius of any flag race is already bounded by the existing design: the allowance is one-shot (consumed on use or rejection), ordinary guide corrections remain capped at ACQUIRE_TCS_MAX_OFFSET in every mode because nothing else ever arms the flag, and the absolute 300″ backstop still applies to the consuming correction. The removed predicate provided no protection/it protected against executing exactly what was asked, which is the bug.
If a stricter arm/consume lifecycle (e.g., clearing on
acquire stop) is wanted, that is a reasonable, separate hardening change. This PR is the urgent one-line restoration of the correct semantic.🤖 Generated with Claude Code