Skip to content

feat(2-bm): record the DMM insert/bypass state (dmm_insertion setting, MODE-2)#292

Merged
xmap merged 1 commit into
mainfrom
worktree-2bm-pink-cluster
Jun 21, 2026
Merged

feat(2-bm): record the DMM insert/bypass state (dmm_insertion setting, MODE-2)#292
xmap merged 1 commit into
mainfrom
worktree-2bm-pink-cluster

Conversation

@xmap

@xmap xmap commented Jun 21, 2026

Copy link
Copy Markdown
Owner

First slice of the Pink-beam cluster (design-stress scoped via a 22-agent workflow; this is the minimal, unblocked, settled piece).

What

Staff confirmed (MODE-2, #261) how the DMM physically switches the beam mode: the three DMM Y motors (2bma:m26 / m27 / m29) drive together to 0 mm (inserted, Mono) or -10 mm (retracted, Pink), inside the one coordinated energy-change move, with no special sequencing and no software interlock.

How (intentional, not mirroring)

The insert/bypass is a two-state, mode-keyed value, not a per-energy relationship. Modeling it as an energy_position_curve would manufacture a fake energy axis (the mirror-the-IOC smell the design-stress pass flagged). Instead it is a closed-enum Monochromator setting:

  • dmm_insertion = inserted | retracted, on the Monochromator Family settings_schema + the Asset settings, reusing the proven Table.axis_layout pattern.
  • The three Y motors and their 0 / -10 mm targets stay documentary in beamline.yaml (an array-of-objects motor map is outside CORA's settings-schema subset, which has no items).
  • The coordinated mode-switch move that drives the state is the deferred beam_mode_change, still gated on the Pink saved positions + stripe map (MODE-3 / MIRROR-1).

Anti-hook compliance

  • No new partition-rule shape (reuses settings_schema enum).
  • Not mirroring the IOC (3 motors collapse to one mode-keyed concept; not a fake keV curve).
  • Codepath-honest: lands fully on the exercised setup path (FamilySettingsSchemaUpdated + AssetSettingsUpdated); no new Assets, no live dispatch.

Tests

  • test_2bm_energy_curves_setup.py extended + passing (schema + setting assertions).
  • tests/unit/deployments/ (62 passed) + mkdocs build --strict clean.

Descriptor + inventory + procedures updated; the answered MODE-2 question row removed. naming-r3 reviewed (dmm_insertion, noun-LAST; values inserted/retracted).

Addresses MODE-2 (#261).

🤖 Generated with Claude Code

…mm_insertion setting (MODE-2)

Staff confirmed (MODE-2, #261) how the DMM physically switches the beam
mode: the three DMM Y motors (2bma:m26/m27/m29) drive together to 0 mm
(inserted, Mono) or -10 mm (retracted, Pink), inside the one coordinated
energy-change move, with no special sequencing and no software interlock.

This is the first Pink-cluster slice (design-stress scoped). The
insert/bypass is a two-state, mode-keyed value, NOT a per-energy curve, so
modeling it as an energy_position_curve would manufacture a fake energy
axis (the mirror-the-IOC smell). Instead it is a closed-enum Monochromator
setting, dmm_insertion = inserted | retracted, using the proven
Table.axis_layout pattern (Family settings_schema + Asset.settings). The
three Y motors and their 0 / -10 mm targets stay documentary in
beamline.yaml (an array-of-objects motor map is outside CORA's settings
schema subset). The coordinated mode-switch move that drives the state is
the deferred beam_mode_change, still gated on the Pink saved positions and
stripe map (MODE-3 / MIRROR-1).

Exercised in test_2bm_energy_curves_setup.py (FamilySettingsSchemaUpdated
+ AssetSettingsUpdated on the Monochromator); no new partition-rule shape,
no new Assets, no live dispatch. Descriptor + inventory + procedures
updated; the answered MODE-2 question row removed.

Addresses MODE-2 (#261).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@xmap xmap enabled auto-merge (squash) June 21, 2026 19:55
@github-actions

Copy link
Copy Markdown

Coverage report

This PR does not seem to contain any modification to coverable code.

@xmap xmap merged commit cd7f024 into main Jun 21, 2026
16 checks passed
@xmap xmap deleted the worktree-2bm-pink-cluster branch June 21, 2026 20:02
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.

1 participant