Skip to content

acamd: classify guide, fine-acquire and deliberate-offset corrections (deliberate offsets by goal generation) - #497

Closed
cfremling wants to merge 1 commit into
feat/fineacquire-wait-for-movefrom
fix/acam-deliberate-offset-generations
Closed

cfremling wants to merge 1 commit into
feat/fineacquire-wait-for-movefrom
fix/acam-deliberate-offset-generations

Conversation

@cfremling

@cfremling cfremling commented Oct 29, 2026 •

Copy link
Copy Markdown
Collaborator

A deliberate goal offset (the star-to-target offset after fine acquisition, put-on-slit, the GUI Offset button) armed a one-shot boolean that any sent correction cleared. When the offsetgoal arrived while an ordinary guide correction's blocking pt_offset was in flight, that correction cleared the allowance as it completed, and the next frame's correction to the new goal was refused at the 60" guiding cap: the exposure was taken on the offset star. Three measured cases (acamd logs):

  • 2026-08-26 10:36:56 ZTF26abicncn, 72" offset, a 0.07" correction completed 46 ms later
  • 2026-10-06 09:10:41 ZTF26abydudp, 136", 0.14" correction 5 ms later
  • 2026-10-19 06:42:30 ZTF26abqmbas, 63", 0.36" correction 211 ms later

The loop was guiding in all three, so the mode gate that #484 removed was not the cause (that one-line change is included here; #484 is closed in favour of this PR).

Goal changes now carry a generation. A correction is classified by the goal it was computed from — guide, fine-acquire, or deliberate offset — and a deliberate-offset correction alone may use the large (ACQUIRE_TCS_MAX_PUTONSLIT_OFFSET) cap; guide and fine-acquire corrections keep ACQUIRE_TCS_MAX_OFFSET. A correction computed from an older goal cannot consume a newer goal's allowance. acamd.cfg.in also gets ACQUIRE_OFFSET_THRESHOLD=1.0, the value the deployed configuration uses.

Stacked on #479 (the goal-shift reporting it builds on); base branch feat/fineacquire-wait-for-move.

Jira: PAL-171. Tested on sky 2026-10-28/29 UT using branch cf/summit-20261020, 18 targets: 21 deliberate offsets (11–117"), none refused, no wrong-object exposure.

🤖 Generated with Claude Code

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-29T13:50:37.066450Z 2ae76b5 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

A deliberate goal offset (the star-to-target offset after fine
acquisition, put-on-slit, the GUI offset) armed a one-shot allowance
that any sent correction cleared. A guide correction whose blocking
pt_offset was in flight when the offset arrived cleared it as it
completed, and the next frame's correction to the new goal was refused
at the guiding cap, so the exposure was taken on the offset star. The
cap selection also required acquire_mode == TARGET_GUIDE, which is a
race of its own.

Goal changes now carry a generation, and each correction is classified
by the goal it was computed from: guide, fine-acquire, or deliberate
offset. Only a deliberate-offset correction may use the larger
ACQUIRE_TCS_MAX_PUTONSLIT_OFFSET cap; once sent it has made the change
and clears goalshift_pending, unless a newer change arrived meanwhile.
A correction computed from an older goal can neither use nor spend a
newer goal's allowance.

acamd.cfg.in: ACQUIRE_OFFSET_THRESHOLD=1.0, the value the deployed
configuration uses.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@cfremling

Copy link
Copy Markdown
Collaborator Author

Combined into #503 with the changes it depends on, so that every open PR applies to main on its own; its change is one commit of #503. Closing.

@cfremling cfremling closed this Oct 29, 2026
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.

3 participants