feat(deployments): NSLS-II SST (soft+tender spectroscopy); graduate ElectronAnalyzer#370
Closed
xmap wants to merge 2 commits into
Closed
feat(deployments): NSLS-II SST (soft+tender spectroscopy); graduate ElectronAnalyzer#370xmap wants to merge 2 commits into
xmap wants to merge 2 commits into
Conversation
…lectronAnalyzer
SST (Spectroscopy Soft and Tender, sector 7-ID) is the eleventh NSLS-II beamline and
CORA's fourth soft X-ray deployment. Reverse-engineered from the config-driven SST
profile collections (NSLS2/sst-rsoxs + sst-haxpes) and the NSLS-II-SST/sst-base library;
every PV verified against source via a dedicated extraction pass, no vendor Models.
SST is CORA's first config-driven extraction (devices.toml prefix + sst-base class
suffix grammar, not startup/*.py), modelled as spine + the SST-1 soft / RSoXS branch +
the SST-2 tender / HAXPES branch (UCAL TES microcalorimeter + VPPEM deferred):
- GRADUATES ElectronAnalyzer into the catalog: the HAXPES Scienta SES is the 2nd
hemispherical electron analyzer after ESM, earning the rule-of-three. ESM's references
are swept loose -> graduated; removed from _ALLOWED_LOOSE_FAMILIES. Presents Detector,
distinct from the photon detectors. naming-r3 done.
- REUSES three graduated families: GratingMonochromator (soft PGM, 4th), Monochromator
(tender Si DCM), Manipulator (RSoXS + HAXPES UHV manipulators, 3rd/4th). No new family.
- RSoXS reuses resonant_scattering; HAXPES adds a new pending method
xray_photoelectron_spectroscopy (distinct from ESM's angle_resolved_photoemission).
Anti-fabrication: a verified-extraction workflow cited every PV to source and flagged
the one unresolvable item (the full multi-channel I400 is not instantiated; only the
single :IC1_MON channel is modelled, carried confirm). The config-driven traps (empty
soft-PGM toml prefix -> hardcoded XF:07ID1-OP{Mono:PGM1; tender DCM XF:07ID6-OP{Mono:DCM1)
are read from the sst-base library, not invented.
Verified: 282 deployment guards green (graduation consistent: ElectronAnalyzer in catalog,
ESM + SST bind it, removed from loose allowlist); mkdocs build --strict; ruff full-tree clean.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…x_ray naming Pre-merge audit (GO) follow-ups: - deployments/esm/beamline.yaml + equipment/detector.md: finish the loose -> graduated sweep (two residual sentences still called ElectronAnalyzer "NEW loose" / "held loose at n=1" on the same lines that say graduated). - rename the new Method x_ray_photoelectron_spectroscopy (was xray_...) to match the sibling inelastic_x_ray_scattering spelling. - SST descriptor: rename the DCM axis key crystal_x -> goni_lateral (the profile labels that PV the DCM goniometer lateral stage, not a crystal-x; the PV is unchanged). Verified: 282 deployment guards green; mkdocs build --strict; ruff full-tree clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Owner
Author
|
Superseded by #372, which landed the NSLS-II SST deployment first and more completely (multi-endstation: RSoXS + NEXAFS + HAXPES). This PR is a duplicate, and it additionally GRADUATES ElectronAnalyzer whereas #372 deliberately HELD it at n=2 as a recorded graduation candidate. Closing to align with main and avoid overriding that hold; the ElectronAnalyzer graduation can be a separate gate-reviewed PR if the owner decides (like CRL-1). Branch left in place pending cleanup decision. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
What
NSLS-II SST (Spectroscopy Soft and Tender, sector 7-ID), CORA's fourth soft X-ray deployment and its first config-driven extraction (devices.toml prefix + the
sst-baselibrary class grammar, notstartup/*.py). Scoped to spine + the SST-1 soft/RSoXS branch + the SST-2 tender/HAXPES branch; the UCAL TES microcalorimeter and VPPEM microscope are deferred.Consolidation + graduation
ElectronAnalyzer— the HAXPES Scienta SES is the 2nd hemispherical electron analyzer after ESM, earning the rule-of-three. ESM's references swept loose→graduated; removed from_ALLOWED_LOOSE_FAMILIES. Presents Detector, distinct from photon detectors.GratingMonochromator(soft PGM, 4th),Monochromator(tender Si DCM),Manipulator(RSoXS + HAXPES, 3rd/4th). No new family.resonant_scattering; HAXPES adds pendingxray_photoelectron_spectroscopy(distinct from ESM'sangle_resolved_photoemission).Anti-fabrication (config-driven source)
A dedicated verified-extraction workflow cited every PV to a source line and flagged the one unresolvable item: the full multi-channel I400 isn't instantiated, so only the single
:IC1_MONchannel is modelled (carriedconfirm). The config-driven traps — the soft PGM's empty toml prefix (real baseXF:07ID1-OP{Mono:PGM1hardcoded insst-base) and the tender DCMXF:07ID6-OP{Mono:DCM1— are read from the library, not invented.Verification
282 deployment guards green (graduation consistent);
mkdocs build --strict; ruff full-tree clean. Adversarial pre-merge audit follows.🤖 Generated with Claude Code