Thanks guys. Ultimately, putting the PF into the Surface Layer's child input did what I wanted.
1) However, more testing brought up another issue, related to Oshyan's comment.
If a PF has Apply High Color only, and takes it's Low color from its input, when that PF is placed into a Surface Layer's Color Function, the color that shows up is related to the type of node of the PF's input. If you put a second PF as the input, color shows up fine. If the second input is a Constant Shader color, for some reason it won't. Why not?
See screenshot. "PF purple tester" A is identical to B when their own preview windows are opened. When slotted into a Surface Layer's Child Input, they are still identical (Surface Layer B, C, and D are all the same). Yet Surface Layer A shows black where the others show orange. (Gray shows up nowhere, as it is fully replaced in all the surface layers).
Why does the Constant Shader not pass through?
[attach=1]
2) Per Oshyan's comment on copying the node, adjusting its color to white/black to get a real "opacity" mask out of the PF: What I was hoping to do is NOT to copy the PF node but create a series of nodes downstream to create/modify into the opacity mask so that if I go back to the original PF and change its scale, features, contrast, roughness, etc, I do not have to remember to do that for the copied node as well. That's prone to user error/forgetfulness.
I tried converting a PF color to grayscale, then tried Abs Color, Clamping Color, Color to Vector, Normalizing Vector, Vector to Color, even a Ceiling Scalar and Floor Scalar (those two got close but not quite). Is there a way to take a PF's color range, make it grayscale, say 65-190 (no absolute blacks or whites), then take the highest number and scale the entire 0-190 (black to highest color) into a 0-255 scale (full gradient from black to white)? That would be what I want and it would work automatically for any color. This would create an accurate opacity mask.
[attach=2]
Thanks,
Matt