feat(p01): scaffold PETRA III Site + the P01 dynamics beamline, reverse-engineered#426
Merged
Conversation
…ine, reverse-engineered
P01 is CORA's first PETRA III (DESY) beamline and its second Tango / Sardana
control floor after MAX IV. It is reverse-engineered from P01's own public
OnlineXML device registry (the online_haspp01eh{1,2,3}.xml Tango device list on
gitlab.desy.de), extracted with the scripts/reverse_engineer/ --source onlinexml
path landed in #423, then curated: the registry's 141 per-axis devices grouped
into Assets at stage granularity across the five hutches (two optics, three
experiment), every value carried confirm until DESY staff verify it.
Two things are genuinely new: the control plane (Tango + Sardana, the seam
"EPICS is the floor" generalizes to "Tango / Sardana is the floor", a sibling of
the ESRF BLISS floor), and the technique branch (nuclear resonant scattering +
RIXS, which earn no catalog Method and are carried pending on the Site reusing
the IXS / RIXS slugs the fleet already shares). P01 coins no new Family: the EH2
sample circle binds Goniometer (not the composed Diffractometer Assembly) since
the registry exposes only theta / two-theta, per the catalog's own guidance.
557 deployment unit tests pass; mkdocs build --strict is clean.
Co-Authored-By: Claude <noreply@anthropic.com>
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.
Summary
deployments/petra-iii/site.yaml) and P01 as its first beamline (deployments/p01/beamline.yaml), CORA's second Tango / Sardana control floor after MAX IV.online_haspp01eh{1,2,3}.xmlon gitlab.desy.de), extracted with thescripts/reverse_engineer/ --source onlinexmlpath from feat(reverse-engineer): add DESY OnlineXML source for PETRA III device topology #423, then curated: the registry's 141 per-axis devices grouped into Assets at stage granularity across five hutches (two optics OH1/OH2, three experiment EH1 NRS / EH2 diffraction / EH3 RIXS). Every value carriedconfirm.docs/deployments/p01/page tree (index, techniques, model, inventory, governance, questions, equipment/{index,sample,detector,controls}) + nav + deployments index entry.Context
P01 introduces two genuinely new things and reuses everything else:
CTRL-1): PETRA III runs Tango + Sardana, so the seam "EPICS is the floor" generalizes to "Tango / Sardana is the floor" (sibling of the ESRF BLISS floor). First deployment whose handles were read from a DESY OnlineXML registry.TECH-1): nuclear resonant scattering + RIXS earn no catalog Method; carried pending on the Site reusing theinelastic_x_ray_scattering/resonant_inelastic_scatteringslugs the fleet already shares.P01 coins no new Family. One binding worth review: the EH2 sample circle is modelled as a
GoniometerAsset (not the composedDiffractometerAssembly) since the registry exposes only theta / two-theta, following the catalog's own TARDIS E6C guidance (DIFF-1).Test plan
pytest tests/unit/deployments/— 557 pass (descriptor validation, loose-family guard, docs coverage, open-questions alignment)make docs-build(mkdocs build --strict) clean; generated Site page,beamline.mdSource walk, and nav all render🤖 Generated with Claude Code