Skip to content

Read the interlock's outcomes without adopting its shape - #591

Merged
xmap merged 1 commit into
mainfrom
claude/github-issues-review-7726b8
Jul 29, 2026
Merged

Read the interlock's outcomes without adopting its shape#591
xmap merged 1 commit into
mainfrom
claude/github-issues-review-7726b8

Conversation

@xmap

@xmap xmap commented Jul 29, 2026

Copy link
Copy Markdown
Owner

Folds the BLEPS answers 2-BM sent back on 2026-07-16, the only new staff answers since the June batch. Closes #562, closes #563, closes #564.

What staff said

BLEPS-1 (#562) and BLEPS-2 (#563) confirmed what CORA assumed. Every latching fault is either a shared utility or one named device, and all 385 signals are readable over Channel Access from a soft IOC deployed 2026-07-14 under 2bmBLEPS:BLEPS:, with PLC dots translated to underscores.

BLEPS-3 (#564) corrected us. There is a beamline-level state operators act on as a whole, three severity aggregates plus two system-wide resets, and warnings latch.

Where this diverges from the recommendations

Staff proposed a dedicated "BLEPS Health" object. This takes the correction and declines the object, for reasons written out in full on the issue.

The load-bearing argument for the object is the reset PVs: they act across many channels at once, so they have no home on Supply or Asset. But they are writes into the interlock, and CORA does not write there, the same posture it holds toward the PSS. The read side already has a home in BeamAvailabilityLookup, the point-in-time pre-flight port that exists for exactly this shape and already folds BLEPS through the composite upstream permit; the three aggregates refine that read below the permit's threshold. And the acknowledgement the reset stands for is already modelled, as Recovering plus an operator-only restore on the latched-alarm precedent. So the answer changed the design without adding the object.

Three smaller places the PLC's boundary is not CORA's:

  • The valves stay on the Supply side. BLEPS owns each valve fault per-valve, but an Asset is for a thing whose identity someone needs, and nobody has asked about one gate valve across time. The failing valve is named in the Supply's reason instead. The promotion trigger is recorded.
  • TEMP1_TRIP to TEMP3_TRIP move to the Mirror. Three thermocouples on one tank fail staff's own criterion for the utility bucket. It also keeps the FLOW2-then-hot-mirror chain legible at two layers instead of one.
  • The nine gate-valve sub-flags roll up. Staff left this as an explicit CORA-side choice. The overall flag moves the status; the sub-flag that latched is the reason on the transition.

Scope change

Cooling water and vacuum move from facility-scope to beamline-scope. The answers show both cut into circuits named for 2-BM optics, which is this beamline's shape rather than the site's. One Supply each, not one per circuit, until a run-readiness decision first differs by circuit. 19-BM's BLEPS-1 assumption line, which says "following 2-BM", is updated to match.

Verification

make docs-build --strict clean, and one pre-existing dangling anchor removed along the way. The 952 tests under tests/unit/deployments pass.

🤖 Generated with Claude Code

BLEPS-1/2/3 came back from 2-BM (#562, #563, #564). Two confirmed what
CORA assumed: every latching fault is either a shared utility or one
named device, and all 385 signals are readable over Channel Access from
the soft IOC deployed 2026-07-14 under `2bmBLEPS:BLEPS:`. The third
corrected us: there IS a beamline-level state operators act on as a
whole, and it latches.

The correction is taken; the suggested model is not. Staff proposed a
system-level "BLEPS Health" object, and its load-bearing argument is the
two reset PVs, which have no home on Supply or Asset because they act
across many at once. But those are writes into the interlock, and CORA
does not write there. Its read side already asks that question in the
pre-flight check, which folds BLEPS through the composite upstream
permit; the three severity aggregates refine that read below the
permit's threshold rather than becoming a state of their own. And the
acknowledgement the reset stands for is already modelled: a Supply an
observation drove down waits in Recovering for a person to say it is
back.

Two other places the PLC's boundary is not CORA's. The valves keep being
read as vacuum despite BLEPS owning each fault per-valve, because an
Asset is for a thing whose identity someone needs and nobody has needed
a gate valve's; the failing valve is named in the Supply's reason
instead. The M1 tank thermocouples move the other way, onto the Mirror,
because three thermocouples on one tank describe one device, not a
resource many devices draw on: a cooling failure then reads as the
Supply falling and, separately, as the mirror it cooled running hot.

Cooling water and vacuum become beamline-scope rather than facility
utilities. The answers show both cut into circuits named for 2-BM
optics, which is this beamline's shape, not the site's. One Supply each,
not one per circuit, until a run-readiness decision first differs by
circuit.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

Coverage report

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

@xmap
xmap merged commit 426f3ec into main Jul 29, 2026
16 checks passed
@xmap
xmap deleted the claude/github-issues-review-7726b8 branch July 29, 2026 16:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant