Skip to content

feat(pdf): scaffold NSLS-II PDF (28-ID-1) total-scattering / PDF deployment, reverse-engineered#397

Merged
xmap merged 2 commits into
mainfrom
worktree-pdf-deployment
Jun 26, 2026
Merged

feat(pdf): scaffold NSLS-II PDF (28-ID-1) total-scattering / PDF deployment, reverse-engineered#397
xmap merged 2 commits into
mainfrom
worktree-pdf-deployment

Conversation

@xmap

@xmap xmap commented Jun 26, 2026

Copy link
Copy Markdown
Owner

What

Scaffolds the NSLS-II PDF deployment (beamline 28-ID-1), the high-energy total-scattering and pair-distribution-function endstation: a high-energy beam through a powder or capillary sample onto flat-panel and pixel area detectors, with a near and a far detector distance merged to reach the high Q a PDF needs. Reverse-engineered from NSLS2/pdf-profile-collection and NSLS2/pdftools. Descriptor + docs scaffold; scenarios deferred; every value carried confirm.

Twin of XPD

PDF (28-ID-1, XF:28ID1*) and XPD (28-ID-2) are the two endstations on the shared 28-ID damping wiggler, same science family. PDF is the dedicated total-scattering / PDF endstation and reuses XPD's modelling.

Modelling

  • Zero new catalog families, nothing graduates. Flat-panel + pixel detectors to Camera; photodiode to FluxMonitor; cryostream/cryostat/furnace to TemperatureController; side-bounce Laue mono to Monochromator; focusing mirror to Mirror; capillary spinner to Goniometer; slits to Slit; fast shutter to Shutter; beamstops to BeamStop; detector/sample-env stages to LinearStage; energy to PseudoAxis. One loose family: StorageRing (supply, MACHINE-1).
  • Two shapes distinguish PDF from XPD, both carried by what is real: a side-bounce (single Laue) monochromator instead of XPD's bent double-Laue (a Monochromator settings difference), and an explicit two-detector / two-distance acquisition (DIST-1).
  • Methods deferred, no Practice (TECH-1), following XPD and the Diamond i11 / i15-1 precedent. The gas-handling / humidity rig is carried deferred (ENV-1).

Files

  • New descriptor deployments/pdf/beamline.yaml (18 devices, verified PVs).
  • New docs docs/deployments/pdf/ (10 authored pages + generated beamline.md).
  • Wiring: site.yaml beamline list + no-Practice comment, mkdocs.yml nav, docs/deployments/index.md row. No test-registry change (no new loose family, no practice).

Note: the missing IOS index row I flagged earlier was already fixed upstream, so it is untouched here.

Verification

  • 410 deployment unit tests pass; mkdocs build --strict builds clean; no em dashes / non-ASCII.
  • Adversarial per-file verification workflow (11 independent verifiers vs the cloned source): 7 clean, 4 correctness findings (a Linkam source-file miscitation, a "same family set as XPD" overclaim for the Goniometer/BeamStop families XPD does not bind, and missing MACHINE-1 / GOV-1 question rows), all verified against the repo and corrected, then re-gated.

🤖 Generated with Claude Code

…al scattering / pair distribution function, XPD's twin), reverse-engineered

PDF is the NSLS-II high-energy total-scattering and powder-diffraction beamline at
sector 28-ID-1, the dedicated pair-distribution-function endstation: a high-energy beam
through a powder or capillary sample onto large flat-panel and pixel area detectors,
with a near and a far detector distance merged to reach the high Q a PDF needs.
Reverse-engineered from public open source (NSLS2/pdf-profile-collection startup
scripts + the NSLS2/pdftools device classes). Descriptor + docs scaffold; EPICS PVs
real and read from source, every value carried confirm; scenarios deferred.

TWIN. PDF (28-ID-1, XF:28ID1*) and XPD (28-ID-2, deployments/xpd) are the two
endstations on the shared 28-ID damping wiggler: same science family (high-energy
powder diffraction and total scattering / PDF), different branch and PV namespace. PDF
is the dedicated total-scattering / PDF endstation and reuses XPD's modelling.

WHY no catalog change, and where PDF differs. Zero new families, nothing graduates.
The flat-panel and pixel area detectors reuse Camera; the photodiode flux monitor
FluxMonitor; the cryostream / cryostat / furnace cluster TemperatureController
(graduated #350); the side-bounce Laue monochromator Monochromator; the focusing
mirror Mirror; the capillary spinner Goniometer; the slits Slit; the fast shutter
Shutter; the beamstops BeamStop; the detector and sample-environment stages
LinearStage; the master energy a PseudoAxis. The one loose family is the StorageRing
supply readback (MACHINE-1). Two shapes distinguish PDF from XPD and are carried by
what is real, not coined: a side-bounce (single Laue) monochromator instead of XPD's
bent double-Laue (a Monochromator settings difference), and an explicit two-detector /
two-distance acquisition that merges a near and a far panel for the PDF Q-range
(DIST-1). The gas-handling / humidity rig present in source is carried deferred
(ENV-1), the discipline that models the settled thermal environment and defers the
in-situ actuators until they earn modelling.

MODELLING: powder diffraction and total scattering / PDF sit on the deferred
powder_diffraction / total_scattering Methods Diamond i11 and i15-1 left pending; PDF
reinforces both at a second NSLS-II endstation without coining either, and following
XPD records no Practice (TECH-1).

Wiring: PDF added to the NSLS-II Site beamline list (no Practice, comment explains
why); deployments index row; mkdocs nav block. No test-registry change (StorageRing is
the supply-exempt loose family; PDF binds no other loose family and records no
practice). The missing IOS index row noted earlier was already fixed upstream, so it
is untouched here. Gate: 410 deployment unit tests pass, mkdocs --strict builds clean,
adversarial per-file verify (11 independent verifiers vs the cloned source) caught four
issues (a Linkam file miscitation, a "same set as XPD" overclaim for the Goniometer /
BeamStop families XPD does not bind, and missing MACHINE-1 / GOV-1 question rows), all
corrected and re-gated.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

Coverage report

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

Resolve the NSLS-II beamline list, mkdocs nav, deployments index, and practices-comment
conflicts against current main (now at ISR #399 + CDI #396); PDF appends after CDI. No
content reconciliation needed: PDF is high-energy total scattering, unrelated to the
coherent-imaging cohort. Gate: 431 deployment tests pass, mkdocs --strict clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@xmap xmap merged commit deedd39 into main Jun 26, 2026
16 checks passed
@xmap xmap deleted the worktree-pdf-deployment branch June 26, 2026 21:15
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